您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
无剑Mud辅修,由在线版移植而来,順便《略改》
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://updategreasyfork.deno.dev/scripts/483658/1354126/%E6%97%A0%E5%89%91Mud%E8%BE%85%E4%BF%AE.js
// ==UserScript== // @name 无剑Mud辅修 // @description 无剑Mud辅修,由在线版移植而来,順便《略改》 // @namespace http://tampermonkey.net/ // @version 1.1.71 // @author 燕飞,东方鸣,懒人 // @match http://*.xxmud.cn/* // @match http://*.guaji321.cn/* // @match http://lib10.cn/* // @match http://orchin.cn/* // @match http://*.yytou.cn/* // @match http://*.yytou.com/* // @match http://118.178.84.7/* // @grant unsafeWindow // @grant GM_info // @grant GM_setClipboard // @grant GM_xmlhttpRequest // @connect updategreasyfork.deno.dev // @run-at document-end // @compatible Chrome >= 80 // @compatible Edge >= 80 // @compatible Firefox PC >= 74 // @compatible Opera >= 67 // @compatible Safari MacOS >= 13.1 // @compatible Firefox Android >= 79 // @compatible Opera Android >= 57 // @compatible Safari iOS >= 13.4 // @compatible WebView Android >= 80 // ==/UserScript== "use strict"; if (document.domain == "orchin.cn") { var params = new URLSearchParams(location.href.split("?")[1]); var host = params.get("ws_host"); params["delete"]("ws_host"); location.replace("http://" + host + "?" + params.toString()); } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() { }; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } // 取消屏蔽 var KEYWORD_PATTERNS = g_gmain.KEYWORD_PATTERNS; g_gmain.KEYWORD_PATTERNS = []; function __(c, w) { return c; } unsafeWindow.init = function () { PLU.YFUI = YFUI; PLU.UTIL = UTIL; GM_xmlhttpRequest({ method: "GET", url: "https://updategreasyfork.deno.dev/scripts/486271/%E6%97%A0%E5%89%91Mud%E8%BE%85%E4%BF%AE%E6%95%B0%E6%8D%AE.js?t=".concat(Date.now()), nocache: true, onload: function onload(res) { eval(res.responseText); PLU.YFD = unsafeWindow.YFD; var waitGameSI = setInterval(function () { if (unsafeWindow.g_obj_map && g_obj_map.get("msg_attrs")) { clearInterval(waitGameSI); PLU.init(); } }, 500); } }); }; // 本地化 function _(c, t) { return navigator.language == "zh-CN" || !t ? c : t; } //================================================================================= // UTIL模块 //================================================================================= unsafeWindow.PLU = { //version: GM_info.script.version + "(24.02.02)", accId: null, nickName: null, battleData: null, MPFZ: {}, TODO: [], //待办列表 STO: {}, SIT: {}, ONOFF: {}, STATUS: { inBattle: 0, isBusy: 0 }, CACHE: { autoDZ: 1, autoHYC: 1, auto9H: 1, autoLX: 1, autoBF: 1, autoB6: 1, autoB5F: 1, autoDY: 0, autoCaicha: 0, develop: 0, puzzleTimeOut: 60 }, FLK: null, TMP: { autotask: false, iBatchAskModel: 0 }, logHtml: "", signInMaps: null, //================================================================================================ init: function init() { this.accId = UTIL.getAccId(); this.developerMode = //专属 UTIL.getMem("CACHE") && JSON.parse(UTIL.getMem("CACHE")).developer || ["3909055(1)","3091591(8)","6740379(1)","6768697(1)","4521232(1)", "4020484(1)", "4512928(1)", "2904280(8)", "8432667(1)", "8432616(1)"].includes(this.accId); this.PersonalMode = //个人 UTIL.getMem("CACHE") && JSON.parse(UTIL.getMem("CACHE")).developer || ["3070884(1)", "4512928(1)", "6768697(1)", "3028780(1)", "7525192(1)", "6740379(1)", "3028233(1)", "6740205(1)", "2904280(8)", "3091591(8)", "3613445(1)", "3093761(8)", "3091552(8)", "3091552(8)", "3107986(8)", "4020484(1)", " "].includes(this.accId); if (this.developerMode) { this.GM_info = GM_info; UTIL.addSysListener("developer", function (b, type, subtype, msg) { if (type && type == "attrs_changed") return; if (type && type == "channel" && subtype == "rumor") return; console.log(b); }); } this.initMenu(); this.initTickTime(); this.initStorage(); this.initHistory(); this.initSocketMsgEvent(); this.initVersion(); addEventListener("keydown", function (key) { if (key.altKey || key.ctrlKey || key.metaKey || key.shiftKey) return; // 不考虑组合键 if (document.activeElement && document.activeElement.tagName == "INPUT") return; switch (key.keyCode) { case 81: // q clickButton("nw"); break; case 87: // w clickButton("n"); break; case 69: // e clickButton("ne"); break; case 65: // a clickButton("w"); break; case 83: // s clickButton("s"); break; case 68: // d clickButton("e"); break; case 90: // z clickButton("sw"); break; case 67: // c clickButton("se"); break; case 66: // B clickButton("items"); break; case 75: // k clickButton("skills"); break; case 86: // v clickButton("vip"); break; } }); }, //================================================================================================ initVersion() { this.nickName = g_obj_map.get("msg_attrs").get("name"); YFUI.writeToOut( `<span style='color:yellow;'> +===========================+ 脚本名称:无剑Mud辅修 版本:${this.version} 脚本开发:燕飞,东方鸣,懒人 当前角色:${this.nickName}${this.developerMode ? "(已开启开发者模式)" : ""}${unsafeWindow.customMode ? "(已开启自定义模式)" : ""} 角色 ID:${this.accId} +===========================+</span>` ); var playerName = this.removeColorCode(this.nickName); //窗口标题 document.title = playerName; YFUI.writeToOut("<span style='color:#FFF;'>监听设定:</span>"); var autosets = ""; if (PLU.getCache("autoDZ") == 1) autosets += "连续打坐, "; if (PLU.getCache("autoHYC") == 1) autosets += "连续睡床, "; if (PLU.getCache("auto9H") == 1) autosets += "持续九花, "; if (PLU.getCache("autoDY") == 1) autosets += "持续钓鱼, "; if (PLU.getCache("autoCaicha") == 1) autosets += "持续采茶, "; if (PLU.getCache("autoLX") == 1) autosets += "连续练习, "; if (PLU.getCache("autoBF") == 1) autosets += "加入帮四, "; if (PLU.getCache("autoB6") == 1) autosets += "加入帮六, "; if (PLU.getCache("autoB5F") == 1) autosets += "帮五跟杀, "; //if (PLU.getCache("listenPuzzle") == 1) autosets += "暴击谜题, "; YFUI.writeToOut("<span style='color:#CFF;'>" + autosets + "</span>"); if (PLU.getCache("autoTP") == 1) { YFUI.writeToOut("<span style='color:#CFF;'>自动突破: <span style='color:#FF9;'>" + PLU.getCache("autoTP_keys") + "</span></span>"); } if (PLU.getCache("listenQL") == 1) { YFUI.writeToOut("<span style='color:#CFF;'>自动青龙: <span style='color:#FF9;'>" + PLU.getCache("listenQL_keys") + "</span></span>"); } if (PLU.getCache("listenKFQL") == 1) { YFUI.writeToOut("<span style='color:#CFF;'>跨服青龙: <span style='color:#FF9;'>" + PLU.getCache("listenKFQL_keys") + "</span></span>"); } if (PLU.getCache("listenTF") == 1) { YFUI.writeToOut("<span style='color:#CFF;'>自动逃犯: <span style='color:#FF9;'>" + PLU.getCache("listenTF_keys") + "</span></span>"); } if (!g_gmain.is_fighting) { PLU.getSkillsList(function (allSkills, tupoSkills) { var _g_obj_map$get; if (tupoSkills.length > 0) { YFUI.writeToOut("<span style='color:white;'>突破中技能:</span>"); var topos = ""; tupoSkills.forEach(function (sk, i) { topos += "<span style='color:#CCF;min-width:100px;display:inline-block;'>" + (i + 1) + " : " + sk.name + "</span>"; }); YFUI.writeToOut("<span style='color:#CCF;'> " + topos + "</span>"); YFUI.writeToOut("<span style='color:yellow;'>+------------------------------+</span>"); } else { YFUI.writeToOut("<span style='color:white;'>突破中技能: 无</span>"); YFUI.writeToOut("<span style='color:yellow;'>+------------------------------+</span>"); } var lxSkill = ((_g_obj_map$get = g_obj_map.get("msg_attrs")) === null || _g_obj_map$get === void 0 ? void 0 : _g_obj_map$get.get("practice_skill")) || 0; if (lxSkill) { var sk = allSkills.find(function (s) { return s.key == lxSkill; }); if (sk) { YFUI.writeToOut("<span style='color:white;'>练习中技能: <span style='color:#F0F;'>" + sk.name + "</span> (" + sk.level + ")</span>"); YFUI.writeToOut("<span style='color:yellow;'>+------------------------------+</span>"); } } else { YFUI.writeToOut("<span style='color:white;'>练习中技能: 无</span>"); YFUI.writeToOut("<span style='color:yellow;'>+------------------------------+</span>"); } }); } }, removeColorCode: function removeColorCode(name) { //去除角色名的彩色代码 return name.replace(/\[[0-9;]*[mG]/g, ""); }, //================================================================================================ initSocketMsgEvent: function initSocketMsgEvent() { if (!gSocketMsg) { console.log("%c%s", "background:#C33;color:#FFF;", " ERROR:Not found gSocketMsg!! "); return; } gSocketMsg.YFBackupDispatchMsg = gSocketMsg.dispatchMessage; gSocketMsg.dispatchMessage = function (b) { gSocketMsg.YFBackupDispatchMsg(b); var type = b.get("type"); var subtype = b.get("subtype"); var msg = b.get("msg"); UTIL.sysDispatchMsg(b, type, subtype, msg); }; gSocketMsg.change_skill_button = function (m, is_del) { var m_vs_info = g_obj_map.get("msg_vs_info"), m2 = g_obj_map.get("msg_attrs"); if (!m_vs_info || !m2) return 0; if (is_del) { g_obj_map.remove("skill_button" + is_del); return 1; } var id = this.get_combat_user_id(); if (id != m.get("uid")) return 0; var pos = parseInt(m.get("pos")); if (pos <= 0 || pos > this._skill_btn_cnt) return 0; g_obj_map.put("skill_button" + pos, m); this.refresh_skill_button(); }; PLU.initListeners(); if (unsafeWindow.clickButton) { var proxy_clickButton = unsafeWindow.clickButton; unsafeWindow.clickButton = function () { var args = arguments; if (PLU.developerMode) { console.log(args); } // 指令录制 if (PLU.TMP.cmds && !g_gmain.is_fighting && ["attrs", "none", "jh", "fb", "prev_combat", "home_prompt", "jhselect", "fbselect", "send_chat"].indexOf(args[0]) < 0 && args[0].indexOf("look_npc ") && !args[0].match(/^(jh|fb)go /) && args[0].indexOf("go_chat")) { if (args[0].indexOf("go southeast.") == 0 || args[0].indexOf("go southwest.") == 0 || args[0].indexOf("go northeast.") == 0 || args[0].indexOf("go northwest.") == 0) PLU.TMP.cmds.push(args[0][3] + args[0][8]); else if (args[0].indexOf("go east.") == 0 || args[0].indexOf("go west.") == 0 || args[0].indexOf("go south.") == 0 || args[0].indexOf("go north.") == 0) PLU.TMP.cmds.push(args[0][3]); else PLU.TMP.cmds.push(args[0]); } if (args[0].indexOf("ask ") == 0) { UTIL.addSysListener("ask", function (b, type, subtype, msg) { if (type == "jh" && subtype == "info" || UTIL.inHome()) { UTIL.delSysListener("ask"); } if (type != "main_msg" || msg.indexOf("嗯,相遇即是缘,你是练武奇才,我送点东西给你吧。") == -1) return; proxy_clickButton(args[0]); UTIL.delSysListener("ask"); }); setTimeout(function () { UTIL.delSysListener("ask"); }, 500); proxy_clickButton(args[0]); } // 解除聊天屏蔽,对非脚本玩家可用 else if (PLU.developerMode && args[0].indexOf("chat ") == 0) { var msg = args[0].substring(5); var _iterator = _createForOfIteratorHelper(KEYWORD_PATTERNS), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var PATTERN = _step.value; msg = msg.replace(PATTERN, function (s) { return Array.from(s).join("\f"); }); } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } proxy_clickButton("chat " + msg); } // 解除四海商店限制 else if ((args[0].indexOf("reclaim recl ") == 0 || args[0].indexOf("reclaim buy ") == 0) && !args[0].match(" page ")) { var cmd = args[0].match(/^reclaim (recl|buy) (\d+) (go )?(.+)$/); if (cmd[1]) { var n = Number(cmd[2]); switch (cmd[1]) { case "recl": for (; n > 50000; n -= 50000) { proxy_clickButton("reclaim recl 50000 go ".concat(cmd[4]), 1); } proxy_clickButton("reclaim recl ".concat(n, " go ").concat(cmd[4]), 1); break; case "buy": for (; n > 50000; n -= 50000) { proxy_clickButton("reclaim buy 50000 go ".concat(cmd[4]), 1); } proxy_clickButton("reclaim buy ".concat(n, " go ").concat(cmd[4]), 1); break; } } } else { proxy_clickButton.apply(void 0, _toConsumableArray(args)); } if (PLU.TMP.leaderTeamSync) { PLU.commandTeam(args); } }; } }, //================================================================================================ initMenu: function initMenu() { YFUI.init(); YFUI.addBtn({ id: "ro", text: "▲隐", style: { width: "30px", opacity: ".6", background: "#333", color: "#FFF", border: "1px solid #CCC", borderRadius: "8px 0 0 0" }, onclick: function onclick($btn) { $("#pluginMenus").toggle(); $("#pluginMenus").is(":hidden") ? $btn.text("▼显") : $btn.text("▲隐"); $(".menu").hide(); } }); YFUI.addBtnGroup({ id: "pluginMenus" }); //Paths var PathsArray = []; PathsArray.push({ id: "bt_home", groupId: "pluginMenus", text: "首页", style: { background: "#FFFF99", padding: "5px 2px", width: "40px" }, onclick: function onclick(e) { $(".menu").hide(); PLU.STATUS.isBusy = false; clickButton("home", 1); } }); var citysArray = PLU.YFD.cityList.map(function (c, i) { return { id: "bt_jh_" + (i + 1), text: c, extend: "jh " + (i + 1) }; }); PathsArray.push({ id: "bt_citys", text: "地图", style: { background: "#FFE", width: "40px", padding: "5px 2px" }, menuStyle: { width: "240px", "margin-top": "-25px" }, children: citysArray }); var qlArray = PLU.YFD.qlList.map(function (p, i) { return { id: "bt_ql_" + (i + 1), text: p.n, extend: { func: function func() { return PLU.execActions(PLU.minPath(PLU.queryRoomPath(), p.v)); } }, style: { "background-color": "#CFF" } }; }); if (PLU.developerMode) qlArray.push({ id: "bt_ql_xunluo", text: "巡逻", extend: { func: PLU.qlxl }, style: { "background-color": "#CFF" } }); PathsArray.push({ id: "bt_qls", text: "青龙", style: { background: "#DFF", width: "40px", padding: "5px 2px" }, menuStyle: { width: "160px", "margin-top": "-50px" }, children: qlArray }); var mjArray = PLU.YFD.mjList.map(function (p, i) { return { id: "bt_mj_" + (i + 1), text: p.n, extend: p.v, style: { "background-color": "#EFD" } }; }); PathsArray.push({ id: "bt_mjs", text: "秘境", style: { background: "#EFD", width: "40px", padding: "5px 2px" }, menuStyle: { width: "160px", "margin-top": "-75px" }, children: mjArray }); PLU.autoChushi = function () { var family = g_obj_map.get("msg_attrs") && g_obj_map.get("msg_attrs").get("family_name"); var master = PLU.YFD.masterList.slice(0, 32).find(function (e) { return e["in"] == family; }); if (master == undefined) return; var npc = PLU.queryNpc("^" + master.npc.slice(-1)[0] + "$", true); if (!npc.length) return; var way = npc[0].way; //PLU.ONOFF["bt_kg_teamSync"] = 0; PLU.execActions(way, function () { var npc = UTIL.findRoomNpcReg("^" + master.npc.slice(-1)[0] + "$"); if (!npc) return; var key = npc.key; PLU.execActions("apprentice " + key, function () { PLU.autoFight({ targetKey: key, fightKind: "fight", autoSkill: "multi", onEnd: function onEnd() { PLU.execActions("chushi " + key, function () { if (family == "铁雪山庄") PLU.execActions("chushi resort_master"); }); }, onFail: function onFail() { PLU.autoFight({ targetKey: key, fightKind: "chushi", autoSkill: "multi", onEnd: function onEnd() { PLU.execActions("chushi " + key); } }); } }); }); }); }; var masterArray = PLU.YFD.masterList.map(function (p, i) { if (i == 32) return { id: "bt_master_33", text: p.n, extend: p.v, style: { "background-color": "#FBB", width: "88px", padding: "5px 2px" } }; var colr = i < 10 ? "#FCF" : i < 20 ? "#CFF" : "#FFC"; return { id: "bt_master_" + (i + 1), text: p.n, children: function () { if (!PLU.developerMode) return []; return [{ id: "bt_master_" + (i + 1) + "_0", text: "拜入" + p.n, extend: { func: function func() { return send_prompt(" 是否确定要加入" + p["in"] + "\n\n\n\n", "home apprentice " + p["in"], "确定", 0); } }, style: { "background-color": colr } }]; }().concat(p.npc.map(function (name, j) { return { id: "bt_master_" + (i + 1) + "_" + (j + 1), text: name.split("@").slice(-1)[0], extend: PLU.queryNpc(name + "道", true)[0].way, style: { "background-color": colr } }; })), style: { "background-color": colr, width: "40px", padding: "5px 2px" }, menuStyle: function () { if (i & 1) return { right: "101px", width: "160px" }; return { width: "160px" }; }() }; }); PathsArray.push({ id: "bt_masters", text: "师门", style: { background: "#FCF", width: "40px", padding: "5px 2px" }, menuStyle: { width: "96px", "margin-top": "-125px" }, children: masterArray }); var dailyArray = PLU.YFD.dailyList.map(function (p, i) { var colr = i < 2 ? "#DDFFDD" : i < 8 ? "#FFC" : i < 22 ? "#FCF" : "#CFF"; return { id: "bt_daily_" + (i + 1), text: p.n, extend: p.v, style: { "background-color": colr } }; }); PathsArray.push({ id: "bt_daily", text: "日常", style: { background: "#FED", width: "40px", padding: "5px 2px" }, menuStyle: { width: "160px", "margin-top": "-125px" }, children: dailyArray }); var usualArray = PLU.YFD.usualList.map(function (p, i) { var sty = p.style || { "background-color": "#CDF" }; return { id: "bt_usual_" + (i + 1), text: p.n, extend: p.v, style: sty }; }); PathsArray.push({ id: "bt_usual", text: "常用", style: { background: "#CDF", width: "40px", padding: "5px 2px" }, menuStyle: { width: "160px", "margin-top": "-210px" }, children: usualArray }); var cts = [], libCity = PLU.YFD.mapsLib.Npc.filter(function (e) { if (!cts.includes(e.jh)) { cts.push(e.jh); return true; } return false; }).map(function (e) { return e.jh; }); var queryJHMenu = libCity.map(function (c, i) { return { id: "bt_queryjh_" + (i + 1), text: c, style: { width: "50px", whiteSpace: "nowrap", overflow: "hidden", fontSize: "12px" }, extend: { func: PLU.queryJHMenu, param: c } }; }); var queryArray = [{ id: "bt_queryJHList", text: "章节", children: queryJHMenu, style: { width: "40px", "background-color": "#9ED" }, menuStyle: { width: "180px", "margin-top": "-180px" } }, { id: "bt_queryHistory", text: "历史", style: { width: "40px", "background-color": "#FDD" }, extend: { func: PLU.toQueryHistory } }, { id: "bt_queryNpc", text: "寻人", style: { width: "40px", "background-color": "#FDD" }, extend: { func: PLU.toQueryNpc } }, { id: "bt_pathNpc", text: "扫图", style: { width: "40px", "background-color": "#FE9" }, extend: { func: PLU.toPathNpc } }, ]; PathsArray.push({ id: "bt_query", text: "查找", style: { background: "#9ED", width: "40px", padding: "5px 2px" }, menuStyle: { "margin-top": "-30px" }, children: queryArray }); YFUI.addMenu({ id: "m_paths", groupId: "pluginMenus", text: "导航", style: { background: "#CCFFFF", width: "40px", padding: "5px 2px" }, multiCol: true, menuStyle: { width: "80px", "margin-top": "-25px" }, children: PathsArray, onclick: function onclick($btn, $box) { if ($btn.$extend) { $(".menu").hide(); if ($btn.$extend.func) { if ($btn.$extend.param) $btn.$extend.func($btn, $btn.$extend.param); else $btn.$extend.func($btn); return; } PLU.execActions($btn.$extend, function () { if ($btn.text() == "去哈日") PLU.goHaRi(); if ($btn.text() == "杭界山") PLU.goHJS(); }); // clickButton($btn.$extend) } } }); //auto do something var somethingArray = []; somethingArray.push({ id: "bt_autoTeach", text: "传授技能", extend: { func: PLU.toAutoTeach }, style: { background: "#BFF" } }); somethingArray.push({ id: "bt_autoUpgrade", text: "升级游侠", extend: { func: PLU.toAutoUpgrade }, style: { background: "#BFF" } }); somethingArray.push({ id: "hr_null2", text: "", style: { display: "none" }, boxStyle: { display: "block", height: "5px" } }); somethingArray.push({ id: "bt_autoLearn", text: "一键学习", extend: { func: PLU.toAutoLearn }, style: { background: "#FBF" } }); somethingArray.push({ id: "bt_autoChuaiMo", text: "自动揣摩", extend: { func: PLU.toAutoChuaiMo }, style: { background: "#FBF" } }); somethingArray.push({ id: "hr_null2", text: "", style: { display: "none" }, boxStyle: { display: "block", height: "5px" } }); somethingArray.push({ id: "bt_loopScript", text: "循环执行", extend: { func: PLU.toLoopScript }, style: { background: "#FBB" } }); somethingArray.push({ id: "bt_loopKillByN", text: "计数击杀", extend: { func: PLU.toLoopKillByN }, style: { background: "#FBB" } }); somethingArray.push({ id: "bt_waitCDKill", text: "倒计时杀", extend: { func: PLU.toWaitCDKill }, style: { background: "#FBB" } }); somethingArray.push({ id: "bt_loopKillName", text: "名字连杀", extend: { func: PLU.toLoopKillName }, style: { background: "#FBB" } }); somethingArray.push({ id: "bt_loopClick", text: "自动点击", extend: { func: PLU.toLoopClick }, style: { background: "#FBB" } }); somethingArray.push({ id: "bt_loopSlowClick", text: "慢速点击", extend: { func: PLU.toLoopSlowClick }, style: { background: "#FBB" } }); somethingArray.push({ id: "bt_autoLianXi", text: "自动练习", extend: { func: PLU.toAutoLianXi }, style: { background: "#FBF" } }); somethingArray.push({ id: "bt_record", text: "指令录制", extend: { func: PLU.toRecord }, style: { background: "#FBB" } }); somethingArray.push({ id: "hr_null2", text: "", style: { display: "none" }, boxStyle: { display: "block", height: "5px" } }); somethingArray.push({ id: "bt_sellLaji", text: "批量出售", extend: { func: PLU.toSellLaji }, style: { background: "#DEF" } }); somethingArray.push({ id: "bt_splitItem", text: "批量分解", extend: { func: PLU.toSplitItem }, style: { background: "#DEF" } }); somethingArray.push({ id: "bt_putStore", text: "批量入库", extend: { func: PLU.toPutStore }, style: { background: "#DEF" } }); somethingArray.push({ id: "bt_autoUse", text: "批量使用", extend: { func: PLU.toAutoUse }, style: { background: "#DEF" } }); somethingArray.push({ id: "bt_combineGem", text: "合成宝石", extend: { func: PLU.openCombineGem }, style: { background: "#DEF" } }); somethingArray.push({ id: "bt_autoMasterGem", text: "一键合天神", extend: { func: PLU.autoMasterGem }, style: { background: "#DEF" } }); somethingArray.push({ id: "hr_null2", text: "", style: { display: "none" }, boxStyle: { display: "block", height: "5px" } }); somethingArray.push({ id: "bt_autoXTL1", text: "刷琅嬛玉洞", extend: { func: PLU.autoXTL1 }, style: { background: "#FED" } }); somethingArray.push({ id: "bt_autoXTL2", text: "刷山崖", extend: { func: PLU.autoXTL2 }, style: { background: "#FED" } }); somethingArray.push({//小龙人 id: "bt_kg_finddragon", text: "找龙人", extend: { func: PLU.toFindDragon }, style: { background: "#EBC" } }); somethingArray.push({ id: "bt_autoERG", text: "刷恶人谷", extend: { func: PLU.autoERG }, style: { background: "#FED" } }); if (PLU.developerMode) somethingArray.push({ id: "bt_searchBangQS", text: "扫暴击", extend: { func: PLU.scanPuzzle }, style: { background: "#BBF" } }); somethingArray.push({ id: "hr_null2", text: "", style: { display: "none" }, boxStyle: { display: "block", height: "5px" } }); somethingArray.push({ id: "bt_autoGetKey", text: "自动捡物品", extend: { func: PLU.toAutoGetKey }, style: { background: "#EBC" } }); somethingArray.push({ id: "bt_autoMoke", text: "一键摹刻", extend: { func: PLU.toAutoMoke }, style: { background: "#EFD" } }); somethingArray.push({ id: "bt_autoKillZYY", text: "刷祝玉妍", extend: { func: PLU.toAutoKillZYY }, style: { background: "#FBF" } }); somethingArray.push({ id: "bt_autoJHYL", text: "九花原料", extend: { func: PLU.buyJHYL }, style: { background: "#DEF" } }); somethingArray.push({ id: "bt_loopReadBase", text: "读技能书", extend: { func: PLU.toLoopReadBase }, style: { background: "#FBB" } }); somethingArray.push({ id: "bt_checkYouxia", text: "技能检查", extend: { func: PLU.checkYouxia }, style: { background: "#DEF" } }); somethingArray.push({ id: "bt_searchFamilyQS", text: "搜师门任务", extend: { func: PLU.toSearchFamilyQS }, style: { background: "#BBF" } }); somethingArray.push({ id: "bt_searchBangQS", text: "搜帮派任务", extend: { func: PLU.toSearchBangQS }, style: { background: "#BBF" } }); somethingArray.push({ id: "bt_autoFB11", text: "自动本11", extend: { func: PLU.autoFB11 }, style: { background: "#FC9" } }); somethingArray.push({ id: "bt_autoFB10", text: "自动本10", extend: { func: PLU.autoFB10 }, style: { background: "#FED" } }); somethingArray.push({ id: "bt_autoaskTianmd", text: "讨天命", extend: { func: PLU.askTianmd }, style: { background: "#55ffff" } }); somethingArray.push({ id: "bt_autoyoumhy", text: "幽冥后院", extend: { func: PLU.autoyoumhy }, style: { background: "#FED" } }); YFUI.addMenu({ id: "m_autoDoSomething", groupId: "pluginMenus", text: "自动", style: { width: "40px" }, multiCol: true, menuStyle: { width: "160px", "margin-top": "-61px" }, children: somethingArray, onclick: function onclick($btn, $box) { if ($btn.$extend) { $(".menu").hide(); $btn.$extend.func($btn); } } }); //listens var listensArray = []; listensArray.push({ id: "bt_autoBF", text: "自动帮四", extend: { key: "autoBF" }, style: { background: "#EDC" } }); listensArray.push({ id: "bt_autoB6", text: "自动帮六", extend: { key: "autoB6" }, style: { background: "#ECD" } }); listensArray.push({ id: "bt_autoB5F", text: "帮五跟杀", extend: { key: "autoB5F" }, style: { background: "#CEF" } }); listensArray.push({ id: "bt_autoTP", text: "持续突破", extend: { key: "autoTP" }, style: { background: "#BEF" } }); listensArray.push({ id: "bt_autoHYC", text: "持续睡床", extend: { key: "autoHYC" }, style: { background: "#CEC" } }); listensArray.push({ id: "bt_autoDZ", text: "持续打坐", extend: { key: "autoDZ" }, style: { background: "#CEC" } }); listensArray.push({ id: "bt_autoLX", text: "持续练习", extend: { key: "autoLX" }, style: { background: "#CEC" } }); listensArray.push({ id: "bt_autoConnect", text: "自动重连", extend: { key: "autoConnect" }, style: { background: "#FED" } }); listensArray.push({ id: "bt_autoDY", text: "持续钓鱼", extend: { key: "autoDY" }, style: { background: "#BEF" } }); listensArray.push({ id: "bt_auto9H", text: "持续九花", extend: { key: "auto9H" }, style: { background: "#BEF" } }); listensArray.push({ id: "bt_autoCaicha", text: "持续采茶", extend: { key: "autoCaicha" }, style: { background: "#BEF" } }); listensArray.push({ id: "bt_autoQuitTeam", text: "进塔离队", extend: { key: "autoQuitTeam" }, style: { background: "#EEF" } }); listensArray.push({ id: "bt_autoSignIn", text: "定时签到", extend: { key: "autoSignIn" }, style: { background: "#BEF" } }); listensArray.push({ id: "hr_listen", text: "", style: { width: "160px", opacity: 0 }, boxStyle: { "font-size": 0 } }); listensArray.push({ id: "bt_listenQL", text: "本服青龙", extend: { key: "listenQL" } }); listensArray.push({ id: "bt_listenKFQL", text: "广场青龙", extend: { key: "listenKFQL" } }); listensArray.push({ id: "bt_listenYX", text: "游侠", extend: { key: "listenYX" } }); listensArray.push({ id: "bt_listenTF", text: "夜魔逃犯", extend: { key: "listenTF" } }); /* listensArray.push({ id: "bt_listenPuzzle", text: "暴击谜题", extend: { key: "listenPuzzle" } }); */ listensArray.push({ id: "bt_showMPFZ", text: "纷争显示", extend: { func: PLU.showMPFZ }, style: { background: "#EEEEFF" } }); listensArray.push({ id: "bt_listenChat", text: "闲聊", extend: { key: "listenChat" } }); YFUI.addMenu({ id: "m_listens", groupId: "pluginMenus", text: "监听", style: { background: "#DDFFDD", width: "40px" }, multiCol: true, menuStyle: { width: "160px", "margin-top": "-25px" }, children: listensArray, onclick: function onclick($btn, $box) { if ($btn.$extend) PLU.setListen($btn, $btn.$extend.key); } }); //fightset var fightSetsArray = []; fightSetsArray.push({ id: "bt_enableSkills", text: "技 能 组", style: { background: "#FBE" }, menuStyle: { "margin-top": "-25px" }, children: [{ id: "bt_enableSkill1", text: "技能组1", extend: { key: "enable1" } }, { id: "bt_enableSkill2", text: "技能组2", extend: { key: "enable2" } }, { id: "bt_enableSkill3", text: "技能组3", extend: { key: "enable3" } }] }); fightSetsArray.push({ id: "bt_wearEquip", text: "装备切换", style: { background: "#FEB" }, children: [{ id: "bt_wearEquip1", text: "装备组1", extend: { key: "equip1" }, canSet: true }, { id: "bt_wearEquip2", text: "装备组2", extend: { key: "equip2" }, canSet: true }, { id: "bt_zbjianshen", text: "剑神套", extend: { key: "zbjianshentao" }, style: { background: "#FEB" }, }, { id: "bt_zbchuidiao", text: "垂钓套", extend: { key: "zbchuidiaotao" }, style: { background: "#FBE" }, }, { id: "bt_zbxianzhe", text: "贤者套", extend: { key: "zbxianzhetao" }, style: { background: "#CCF" }, }] }); fightSetsArray.push({ id: "bt_followKill", text: "跟杀设置", extend: { key: "followKill" }, style: { background: "#FCC" } }); fightSetsArray.push({ id: "bt_autoCure", text: "血蓝设置", extend: { key: "autoCure" }, style: { background: "#CCF" } }); fightSetsArray.push({ id: "bt_autoPerform", text: "技能设置", extend: { key: "autoPerform" }, style: { background: "#CFC" } }); YFUI.addMenu({ id: "m_fightsets", groupId: "pluginMenus", text: "战斗", style: { background: "#FFDDDD", width: "40px" }, //multiCol: true, menuStyle: { width: "80px", "margin-top": "-50px" }, children: fightSetsArray, onclick: function onclick($btn, $box, BtnMode) { if ($btn.$extend) { if ($btn.$extend.key && PLU.getCache($btn.$extend.key) == 0) $(".menu").hide(); if ($btn.$extend.key.match("enable")) return PLU.setSkillGroup($btn.$extend.key.substr(-1)); if ($btn.$extend.key.match("equip")) { var equipKey = "equip_" + $btn.$extend.key.substr(-1) + "_keys"; var equipsStr = PLU.getCache(equipKey); $(".menu").hide(); if (equipsStr && BtnMode != "setting") { return PLU.wearEquip(equipsStr); } return PLU.setWearEquip($btn.$extend.key.substr(-1)); } if ($btn.$extend.key == "zbjianshentao") return PLU.zbjianshen($btn, $btn.$extend.key); if ($btn.$extend.key == "zbchuidiaotao") return PLU.zbchuidiao($btn, $btn.$extend.key); if ($btn.$extend.key == "zbxianzhetao") return PLU.zbxianzhe($btn, $btn.$extend.key); if ($btn.$extend.key == "followKill") return PLU.setFightSets($btn, $btn.$extend.key); if ($btn.$extend.key == "autoCure") return PLU.setAutoCure($btn, $btn.$extend.key); if ($btn.$extend.key == "autoPerform") return PLU.setAutoPerform($btn, $btn.$extend.key); if ($btn.$extend.key == "autoPerform") return PLU.setAutoPerform($btn, $btn.$extend.key); } } }); // puzzle var puzzleArray = []; if (PLU.developerMode) puzzleArray.push({ id: "bt_puzzle_key", text: "通告设置", extend: { key: "" } }); puzzleArray.push({ id: "bt_puzzle_Key", text: "密码设置", extend: { func: PLU.puzzleKey } }); if (PLU.developerMode) puzzleArray.push({ id: "bt_puzzle_key", text: "进度设置", extend: { func: PLU.key } }); puzzleArray.push({ id: "bt_puzzle_key", text: "超时设置", extend: { func: PLU.puzzleTimeOut } }); /* if (PLU.developerMode) YFUI.addMenu({ id: "m_puzzle", groupId: "pluginMenus", text: "谜题", style: { background: "#CCC", width: "40px" }, menuStyle: { "margin-top": "-75px" }, children: puzzleArray, onclick: function onclick($btn, $box) { if ($btn.$extend) { $(".menu").hide(); $btn.$extend.func($btn); } } }); */ //Sign var signArray = []; signArray.push({ id: "bt_answerQues", text: "自动答题", extend: { func: PLU.answerQues }, style: { background: "#DEF" }, }); signArray.push({ id: "bt_autoAskQixia", text: "自动问奇侠", extend: { func: PLU.toAutoAskQixia } }); signArray.push({ id: "bt_autoVisitQixia", text: "亲近奇侠", style: { background: "#CFC" }, extend: { func: PLU.toAutoVisitQixia } }); signArray.push({ id: "hr_dlus", text: "", style: { width: "240px", opacity: 0 } }); signArray.push({ id: "bt_ricrw", text: "日常周常", extend: { key: "ricrw" }, style: { background: "#FBE" } }); signArray.push({ id: "bt_sign", text: "一键签到", extend: { key: "signIn" }, style: { background: "#CCFFFF" } }); YFUI.addMenu({ id: "m_signs", groupId: "pluginMenus", text: "签到", style: { background: "#DDFFFF", width: "40px" }, menuStyle: { "margin-top": "-92px" }, children: signArray, onclick: function onclick($btn, $box) { if ($btn.$extend) { if ($btn.$extend.key == "signIn") { $(".menu").hide(); return PLU.toSignIn(); } else if ($btn.$extend.key == "autoSignIn") { return PLU.setListen($btn, $btn.$extend.key); } else if ($btn.$extend.key == "ricrw") { $(".menu").hide(); return PLU.toricrw(); } else if ($btn.$extend.key == "autoricrw") { return PLU.setListen($btn, $btn.$extend.key); } else { $(".menu").hide(); $btn.$extend.func($btn); } } } }); //sys var sysArray = []; sysArray.push({ id: "bt_openTeam", text: "开队伍", children: [{ id: "bt_openTeam1", text: "加入队伍", extend: { func: PLU.asJirudw }, style: { background: "#DEF" }, }, { id: "bt_openTeam2", text: "退出队伍", extend: "team quit", }, { id: "bt_openTeam3", text: "重开队伍", extend: "team create", style: { background: "#00ff00" }, } ] }); sysArray.push({ id: "bt_openFudi", text: "开府邸", extend: "fudi" }); sysArray.push({ id: "bt_openShop", text: "开商城", extend: "shop" }); sysArray.push({ id: "bt_openJFShop", text: "积分商城", extend: "shop xf_shop" }); sysArray.push({ id: "bt_open4HShop", text: "四海商店", children: [{ id: "bt_open4HShop1", text: "回收", extend: "reclaim recl" }, { id: "bt_open4HShop2", text: "兑换", extend: "reclaim buy" }, { id: "bt_open4HShop3", text: "宝箱兑换", extend: "reclaim change"//event_1_4500617 } ] }); sysArray.push({ id: "bt_clanShop", text: "帮派商店", extend: "clan;clan_shop;" }); sysArray.push({ id: "bt_clanShop", text: "浣花剑阵", extend: "hhjz;" }); sysArray.push({ id: "bt_huanpf", text: "换皮肤", extend: { func: PLU.huanpf }, style: { background: "#DEF" } }); /* sysArray.push({ id: "bt_cuiquShop", text: "熔炼", extend: "event_1_15136162;", style: { background: "#DEF"}, }); sysArray.push({ id: "bt_cuiquShop", text: "萃取", extend: "event_1_33471583;", style: { background: "#DEF" }, }); */ sysArray.push({ id: "hr_sys", text: "", style: { width: "160px", opacity: 0 }, boxStyle: { "font-size": 0 } }); sysArray.push({ id: "bt_intervene", text: "杀隐藏怪", extend: { func: PLU.intervene } }); sysArray.push({ id: "bt_openQixia", text: "奇侠列表", extend: "open jhqx" }); sysArray.push({ id: "bt_openzbei", text: "装备兑换", style: { background: "#DEF" }, children: [{ id: "bt_openzbei1", text: "购买斩龙", extend: { func: PLU.buyzl10 }, }, { id: "bt_openzbei2", text: "兑换胤天", extend: { func: PLU.dhyt11 }, }, { id: "bt_openzbei3", text: "兑换皇天", extend: { func: PLU.dhht12 }, }, { id: "bt_openzbei8", text: "兑换冰材", extend: { func: PLU.dhbingy }, }, { id: "bt_openzbei4", text: "打造冰月", extend: { func: PLU.dzbingy }, }, { id: "bt_openzbei5", text: "兑换剑神", extend: { func: PLU.dhjians }, style: { background: "#FEB" }, }, { id: "bt_openzbei6", text: "兑换垂钓", extend: { func: PLU.dhchuid }, style: { background: "#FBE" }, }, { id: "bt_openzbei7", text: "兑换贤者", extend: { func: PLU.dhzxianz }, style: { background: "#CCF" }, } ] }); sysArray.push({ id: "bt_task", text: "谜题列表", extend: "task_quest" }); sysArray.push({ id: "bt_openfscail", text: "取飞升材料", style: { background: "#DEF"}, children: [{ id: "bt_openfscail1", text: "金身材料", extend: "items get_store /obj/book/neigongxinfamiji;items get_store /obj/shop/jiuzhuanshendan;items get_store /obj/book/jiuyinxuanbingjiancanye;items get_store /obj/shop/wulingchangye;items get_store /obj/shop/wulingchangye;items get_store /obj/baoshi/huangbaoshi8;items get_store /obj/med/jinengtianshu;items info obj_lzjsj;" }, { id: "bt_openfscail2", text: "龙爪材料", extend: "items get_store /obj/book/pujigedoumiji;items get_store /obj/shop/jiuzhuanshendan;items get_store /obj/book/tianshanfeijiancanye;items get_store /obj/shop/wulingchangye;items get_store /obj/baoshi/lanbaoshi8;items get_store /obj/med/jinengtianshu;items info obj_zlzs;" }, { id: "bt_openfscail3", text: "湿剑材料", extend: "items get_store /obj/book/jibenjianfamiji;items get_store /obj/shop/jiuzhuanshendan;items get_store /obj/book/baifashenjiancanye;items get_store /obj/shop/wulingchangye;items get_store /obj/baoshi/zishuijing8;items get_store /obj/med/jinengtianshu;items info obj_shjj;" }, { id: "bt_openfscail4", text: "强身材料", extend: "items get_store /obj/book/neigongxinfamiji;items get_store /obj/shop/jiuzhuanshendan;items get_store /obj/book/xiaoyunlongtengjiancanye;items get_store /obj/shop/wulingchangye;items get_store /obj/baoshi/hongbaoshi8;items get_store /obj/med/jinengtianshu;items info obj_lsqss;" }, { id: "bt_openfscail5", text: "万剑材料", extend: "items get_store /obj/yushi/dixisui1;items get_store /obj/yushi/donghaibi1;items get_store /obj/yushi/jiutianluo1;items get_store /obj/yushi/juzimo1;items get_store /obj/yushi/kunlunyin1;items get_store /obj/yushi/longtingpo1;items get_store /obj/yushi/xuanyuanlie1;items get_store /obj/baoshi/hongbaoshi8;items get_store /obj/baoshi/lvbaoshi8;items get_store /obj/baoshi/huangbaoshi8;items get_store /obj/shop/wjgz_miji;items info obj_wjgz_miji;" }, { id: "bt_openfscail6", text: "如来材料", extend: "items get_store /obj/yushi/dixisui1;items get_store /obj/yushi/donghaibi1;items get_store /obj/yushi/jiutianluo1;items get_store /obj/yushi/juzimo1;items get_store /obj/yushi/kunlunyin1;items get_store /obj/yushi/longtingpo1;items get_store /obj/yushi/xuanyuanlie1;items get_store /obj/baoshi/hongbaoshi8;items get_store /obj/baoshi/lvbaoshi8;items get_store /obj/baoshi/huangbaoshi8;items get_store /obj/shop/rlzj_miji;items info obj_rlzj_miji;" }, { id: "bt_openfscail7", text: "仙步材料", extend: "items get_store /obj/yushi/dixisui1;items get_store /obj/yushi/donghaibi1;items get_store /obj/yushi/jiutianluo1;items get_store /obj/yushi/juzimo1;items get_store /obj/yushi/kunlunyin1;items get_store /obj/yushi/longtingpo1;items get_store /obj/yushi/xuanyuanlie1;items get_store /obj/baoshi/hongbaoshi8;items get_store /obj/baoshi/lvbaoshi8;items get_store /obj/baoshi/huangbaoshi8;items get_store /obj/shop/zydsb_miji;items info obj_zydsb_miji;" } ] }); sysArray.push({ id: "bt_cleartask", text: "清谜题", extend: "auto_tasks cancel" }); sysArray.push({ id: "hr_sys", text: "", style: { width: "160px", opacity: 0 }, boxStyle: { "font-size": 0 } }); sysArray.push({ id: "set_profile", text: "个人设置", extend: { key: "profileSetting" }, style: { background: "#EEEEFF" }, }); sysArray.push({ id: "bt_log", text: "消息日志", extend: { func: PLU.showLog }, style: { background: "#99CC00" } }); sysArray.push({ id: "bt_upset", text: "备份设置", extend: { func: PLU.backupSetting }, style: { background: "#FFAAAA" } }); sysArray.push({ id: "bt_dlset", text: "载入设置", extend: { func: PLU.loadSetting }, style: { background: "#FFCC00" } }); YFUI.addMenu({ id: "m_sys", groupId: "pluginMenus", text: "工具", multiCol: true, style: { background: "#FFFFDD", width: "40px" }, menuStyle: { width: "160px", "margin-top": "-117px" }, children: sysArray, onclick($btn, $box) { if ($btn.$extend) { if ($btn.$extend.key == "profileSetting") { $(".menu").hide(); return PLU.profileSetting(); } else if ($btn.$extend && $btn.$extend.func) { $(".menu").hide(); $btn.$extend.func($btn); } else if ($btn.$extend) { $(".menu").hide(); PLU.execActions($btn.$extend); } } }, }); //个人增加 var SgerenArray = []; SgerenArray.push({ id: "bt_autoQuyijiy", text: "取一级玉", extend: { func: PLU.Quyijiy } }); SgerenArray.push({ id: "bt_autoQuTianss", text: "取天神", extend: { func: PLU.QuTianss }, style: { background: "#ff5555" } }); SgerenArray.push({ id: "bt_autoDianLiCai", text: "文庙超投", extend: { func: PLU.DianLiCai }, style: { background: "#FBE" } }); SgerenArray.push({ id: "bt_autoQuLiCai", text: "取理财", extend: { func: PLU.QuLiCai }, style: { background: "#bbbb00" } }); SgerenArray.push({ id: "bt_autoXuelian", text: "买雪莲", extend: { func: PLU.buyXueLian }, style: { background: "#DEF" } }); SgerenArray.push({ id: "bt_autoeatHuoG", text: "吃火锅", extend: { func: PLU.eatHuoG }, style: { background: "#55ffff" } }); SgerenArray.push({ id: "bt_autobuping", text: "吃补品", extend: { func: PLU.eatbuping }, style: { background: "#DEF" } }); SgerenArray.push({ id: "bt_autoLLBao", text: "礼包", extend: { func: PLU.LLBao }, style: { background: "#DEF" } }); //SgerenArray.push({ id: "bt_autoaskTianmd", text: "讨天命", extend: { func: PLU.askTianmd }, style: { background: "#55ffff" } }); //SgerenArray.push({ id: "bt_autoChuangLou", text: "闯楼", extend: { func: PLU.autoChuangLou }, style: { background: "#DEF" } }); SgerenArray.push({ id: "bt_autoLongsjs", text: "龙神祭祀", extend: { func: PLU.Longsjs }, style: { background: "#55ffff" } }); SgerenArray.push({ id: "bt_autoYandijd", text: "炎帝祭典", extend: { func: PLU.Yandijd }, style: { background: "#55ffff" } }); SgerenArray.push({ id: "bt_autoeatSans", text: "用三生", extend: { func: PLU.eatSans }, style: { background: "#55ffff" } }); SgerenArray.push({ id: "bt_autocaomeibs", text: "草莓冰沙", extend: { func: PLU.caomeibs }, style: { background: "#FBE" } }); SgerenArray.push({ id: "bt_autochoujiang", text: "去抽奖", extend: { func: PLU.choujiang }, style: { background: "#FFFF55" }, }); SgerenArray.push({ id: "bt_autogivehuf", text: "交虎符", extend: { func: PLU.givehuf }, style: { background: "#E19100" }, }); SgerenArray.push({ id: "bt_antoxuetyz", text: "雪亭驿站", extend: { func: PLU.xuetyz }, style: { background: "#DDFFDD" }, }); SgerenArray.push({ id: "bt_antoLongsyj", text: "龙神遗迹", extend: { func: PLU.Longsyj }, style: { background: "#DDFFDD" }, }); SgerenArray.push({ id: "bt_autokillXLR", text: "刷小龙人", extend: { func: PLU.killXLR }, style: { background: "#FFFF99" }, }); SgerenArray.push({ id: "bt_autoningjlp", text: "凝聚力魄", extend: { func: PLU.ningjlp }, style: { background: "#FBB" }, }); SgerenArray.push({ id: "bt_autosaoxlr", text: "打小龙人", extend: { func: PLU.saoxlr }, //style: {background: "#FFFF99"}, }); SgerenArray.push({ id: "bt_autonstbj", text: "石头暴击", extend: { func: PLU.saodbjst }, //style: {background: "#FBB"}, }); /* SgerenArray.push({ id: "bt_autoqiangss", text: "学强身术", extend: { func: PLU.LZqiangss }, style: { background: "#DEF" }, }); */ //if (PLU.PersonalMode) { YFUI.addMenu({ id: "m_Sgeren", groupId: "pluginMenus", text: "个人", multiCol: true, style: { background: "#FBE", width: "40px" }, menuStyle: { width: "160px", "margin-top": "-117px" }, children: SgerenArray, onclick: function onclick($btn, $box) { if ($btn.$extend && $btn.$extend.func) { $(".menu").hide(); $btn.$extend.func($btn); } else if ($btn.$extend) { $(".menu").hide(); PLU.execActions($btn.$extend); } } }); //} //================================================================================ // 活动 //================================================================================ // let activeArray=[] // activeArray.push({id:"bt_goShop1", text:"去小二", extend:"jh 1;"}) // activeArray.push({id:"bt_buyItem1", text:"买四样", extend:"#21 buy_npc_item go 0;#21 buy_npc_item go 1;#21 buy_npc_item go 2;#21 buy_npc_item go 3;"}) // activeArray.push({id:"bt_goShop2", text:"去掌柜", extend:"jh 5;n;n;n;w;", style:{background:"#FDD"}}) // activeArray.push({id:"bt_buyItem2", text:"买红粉", extend:"#6 buy_npc_item go 0;", style:{background:"#FDD"}}) // activeArray.push({id:"bt_goShop3", text:"去小贩", extend:"jh 2;n;n;n;n;e;", style:{background:"#DEF"}}) // activeArray.push({id:"bt_buyItem3", text:"买黄粉", extend:"#6 event_1_17045611 go 0;", style:{background:"#DEF"}}) // activeArray.push({id:"bt_goShop4", text:"去峨眉", extend:"jh 8;w;nw;n;n;n;n;e;e;n;n;e;kill?看山弟子;n;n;n;n;w;", style:{background:"#EFE"}}) // activeArray.push({id:"bt_buyItem4", text:"买蓝粉", extend:"#6 event_1_39153184 go 0;", style:{background:"#EFE"}}) // activeArray.push({id:"bt_goAll", text:"一键买材料", extend:"jh 1;#21 buy_npc_item go 0;#21 buy_npc_item go 1;#21 buy_npc_item go 2;#21 buy_npc_item go 3;jh 5;n;n;n;w;#6 buy_npc_item go 0;jh 2;n;n;n;n;e;#6 event_1_17045611 go 0;jh 8;w;nw;n;n;n;n;e;e;n;n;e;kill?看山弟子;n;n;n;n;w;#6 event_1_39153184 go 0;", style:{background:"#9F9"}}) // activeArray.push({id:"bt_goShoot", text:"去放烟花", extend:"jh 2;n;n;n;", style:{background:"#FD9"}}) // // activeArray.push({id:"bt_n", text:"", style:{opacity:0}}) // // activeArray.push({id:"hr_sys", text:"", style:{width:"160px",opacity:0}, boxStyle:{"font-size":0}}) // activeArray.push({id:"bt_goShoot1", text:"一键璀璨", extend:"#5 event_1_99582507;#15 event_1_48376442;", style:{background:"#F9D"}}) // activeArray.push({id:"bt_goShoot2", text:"一键四款", extend:"#5 event_1_74166959;#5 event_1_10053782;#5 event_1_25918230;#5 event_1_48376442;", style:{background:"#D9F"}}) // YFUI.addMenu({ // id: "m_active", // groupId:"pluginMenus", // text: "元宵", // multiCol: true, // style:{"background":"#FFFF55","width":"40px","margin-top":"25px"}, // menuStyle: {width: "160px","margin-top":"-22px"}, // children: activeArray, // onclick($btn,$box){ // if($btn.$extend && $btn.$extend.func){ // //$(".menu").hide() // $btn.$extend.func($btn) // }else if($btn.$extend){ // //$(".menu").hide() // PLU.execActions($btn.$extend,()=>{ // YFUI.writeToOut("<span style='color:#FFF;'>========== OK ==========</span>") // }) // } // } // }) //========实验田=================================================== if (PLU.developerMode) { var flagArray = []; flagArray.push({ id: "bt_npcDataUpdate", text: "数据更新", extend: { func: PLU.npcDataUpdate } }); flagArray.push({ id: "bt_pathNpc", text: "全图谜题", extend: { func: PLU.toQueryMiTi }, style: { "background-color": "#00bbbb" }, }); flagArray.push({ id: "bt_puzzle_key", text: "通告设置", extend: { key: "" } }); flagArray.push({ id: "bt_puzzle_Key", text: "密码设置", extend: { func: PLU.puzzleKey } }); flagArray.push({ id: "bt_puzzle_key", text: "进度设置", extend: { func: PLU.key } }); flagArray.push({ id: "bt_puzzle_key", text: "超时设置", extend: { func: PLU.puzzleTimeOut } }); YFUI.addMenu({ id: "m_flag", groupId: "pluginMenus", text: "专属", multiCol: true, style: { background: "#FBB", width: "40px" }, menuStyle: { width: "160px", "margin-top": "-117px" }, children: flagArray, onclick: function onclick($btn, $box) { if ($btn.$extend && $btn.$extend.func) { $(".menu").hide(); $btn.$extend.func($btn); } else if ($btn.$extend) { $(".menu").hide(); PLU.execActions($btn.$extend); } } }); } //================================================================================ //================================================================================ var gh = parseInt($("#page").height() * $("#page").height() * 0.00025); YFUI.addBtn({ id: "bt_col_null", groupId: "pluginMenus", text: "", style: { background: "transparent", height: gh + "px", width: "0px", visibility: "hidden" }, boxStyle: { "pointer-events": "none" } }); //战斗按钮 YFUI.addBtn({ id: "bt_kg_autoEscape", groupId: "pluginMenus", text: "逃跑", style: { background: "#DDCCEE", height: "20px", width: "40px" }, // boxStyle:{"margin-bottom":"15px"}, onclick: function onclick($btn) { var btnFlag = PLU.setBtnRed($btn); if (btnFlag) { PLU.autoEscape({ onEnd: function onEnd() { PLU.setBtnRed($btn); } }); } else UTIL.delSysListener("onAutoEscape"); } }); YFUI.addBtn({ id: "bt_kg_loopKill", groupId: "pluginMenus", text: "循环杀", style: { background: "#EECCCC", height: "20px", width: "40px" }, // boxStyle:{"margin-bottom":"15px"}, onclick: function onclick($btn) { PLU.toLoopKill($btn); } }); YFUI.addBtn({ id: "bt_kg_teamSync", groupId: "pluginMenus", text: "同步", style: { background: "#DDCCEE", height: "20px", width: "40px" }, boxStyle: { "margin-bottom": "15px" }, onclick: function onclick($btn) { PLU.toggleTeamSync($btn); } }); YFUI.addBtn({ id: "bt_kg_followKill", groupId: "pluginMenus", text: "跟杀", style: { background: "#FFDDDD", height: "25px", width: "40px" }, onclick: function onclick($btn) { PLU.toggleFollowKill($btn, "followKill"); } }); YFUI.addBtn({ id: "bt_kg_autoCure", groupId: "pluginMenus", text: "血蓝", style: { background: "#CCCCFF", height: "25px", width: "40px" }, onclick: function onclick($btn) { PLU.toggleAutoCure($btn, "autoCure"); } }); YFUI.addBtn({ id: "bt_kg_autoPerform", groupId: "pluginMenus", text: "连招", style: { background: "#FFCCFF", height: "25px", width: "40px" }, onclick: function onclick($btn) { PLU.toggleAutoPerform($btn, "autoPerform"); } }); //monitor var momaxW = $("#page").width() - $("#out").width() > 4 && $("#out").width() > 634 ? 475 : Math.floor($("#out").width() * 0.75); var leftSty = $("#page").width() - $("#out").width() > 4 && $("#page").width() > 634 ? "79px" : "12%"; YFUI.addBtnGroup({ id: "topMonitor", style: { position: "fixed", top: 0, left: leftSty, width: "75%", height: "15px", maxWidth: momaxW + "px", lineHeight: "1.2", fontSize: "11px", textAlign: "left", color: "#FF9", background: "rgba(0,0,0,0)", display: "none" } }); }, //================================================================================================ getCache: function getCache(key) { var _PLU$CACHE$key; return (_PLU$CACHE$key = PLU.CACHE[key]) !== null && _PLU$CACHE$key !== void 0 ? _PLU$CACHE$key : ""; }, //================================================================================================ setCache: function setCache(key, val) { PLU.CACHE[key] = val; UTIL.setMem("CACHE", JSON.stringify(PLU.CACHE)); return val; }, //================================================================================================ initStorage: function initStorage() { if (!UTIL.getMem("CACHE")) UTIL.setMem("CACHE", JSON.stringify(PLU.CACHE)); var caObj, ca = UTIL.getMem("CACHE"); try { caObj = JSON.parse(ca); } catch (err) { } if (caObj) { PLU.CACHE = caObj; var listen = ["listenPuzzle", "listenChat", "listenQL", "listenTF", "listenKFQL", "listenYX", "autoDZ","autoHYC", "auto9H", "autoDY", "autoCaicha","autoTP", "autoLX", "autoBF", "autoB5F", "autoB6", "autoConnect", "autoSignIn", "autoQuitTeam"]; for (var i = 0, len = listen.length; i < len; i++) { if (PLU.getCache(listen[i]) == 1) PLU.setListen($("#btn_bt_" + listen[i]), listen[i], 1); } if (PLU.getCache("listenPuzzle") == 0) { PLU.TMP.autotask = false; } if (PLU.getCache("followKill") == 1) { PLU.toggleFollowKill($("#btn_bt_kg_followKill"), "followKill", 1); } if (PLU.getCache("autoCure") == 1) { PLU.toggleAutoCure($("#btn_bt_kg_autoCure"), "autoCure", 1); } if (PLU.getCache("autoPerform") >= 1) { PLU.toggleAutoPerform($("#btn_bt_kg_autoPerform"), "autoPerform", PLU.getCache("autoPerform")); } if (PLU.getCache("showTopMonitor") == 1) { PLU.showMPFZ($("#btn_bt_showMPFZ")); } } }, //================================================================================================ initHistory: function initHistory() { //--------------------- document.addEventListener("addLog", PLU.updateShowLog); //--------------------- var hisArr = [], hstr = UTIL.getMem("HISTORY"); if (hstr) try { hisArr = JSON.parse(hstr); } catch (err) { } if (hisArr && hisArr.length) { var nowTs = new Date().getTime(); var newArr = hisArr.filter(function (h) { UTIL.log(Object.assign({}, h, { isHistory: true })); if (nowTs - h.time > 43200000) return false; return true; }); UTIL.logHistory = newArr; UTIL.setMem("HISTORY", JSON.stringify(newArr)); } PLU.MPFZ = UTIL.getMem("MPFZ") ? JSON.parse(UTIL.getMem("MPFZ")) : {}; }, //================================================================================================ initListeners: function initListeners() { //监听战斗消息 UTIL.addSysListener("listenAllFight", function (b, type, subtype, msg) { if (type == "vs") { switch (subtype) { case "vs_info": if (b.containsKey("is_watcher")) { PLU.STATUS.inBattle = 2; break; } PLU.STATUS.inBattle = 1; if (!PLU.battleData) PLU.battleData = { skills: {}, xdz: 0, myPos: 0, mySide: "", performTime: 0, cureTimes: 0 }; for (var i = b.elements.length - 1; i > -1; i--) { var val = b.elements[i].value + ""; if (!val || val.indexOf(PLU.accId) < 0) continue; PLU.battleData.myPos = b.elements[i].key.charAt(7); PLU.battleData.mySide = b.elements[i].key.substring(0, 3); break; } PLU.STATUS.isBusy = true; break; case "ready_skill": if (b.get("uid").indexOf(PLU.accId) < 0 || b.get("skill") == "fight_item") break; if (!PLU.battleData) PLU.battleData = { skills: {}, xdz: 0, myPos: 0, mySide: "", performTime: 0, cureTimes: 0 }; PLU.battleData.skills[b.get("pos") - 1] = { name: UTIL.filterMsg(b.get("name")), skill: b.get("skill"), xdz: b.get("xdz"), key: "playskill " + b.get("pos") }; break; case "add_xdz": if (b.get("uid").indexOf(PLU.accId) < 0) break; if (!PLU.battleData) PLU.battleData = { skills: {}, xdz: 0, myPos: 0, mySide: "", performTime: 0, cureTimes: 0 }; PLU.battleData.xdz = parseInt(b.get("xdz")); if (PLU.STATUS.inBattle == 1 && PLU.battleData && PLU.battleData.xdz > 1) { PLU.checkUseSkills(); } break; case "playskill": if (b.get("uid").indexOf(PLU.accId) < 0) break; if (!PLU.battleData) PLU.battleData = { skills: {}, xdz: 0, myPos: 0, mySide: "", performTime: 0, cureTimes: 0 }; var x = PLU.battleData.xdz - parseInt(b.get("lose_xdz")); if (parseInt(b.get("lose_xdz"))) PLU.battleData.xdz = x > 0 ? x : 0; break; case "out_watch": PLU.STATUS.inBattle = 0; PLU.STATUS.isBusy = false; break; case "combat_result": PLU.STATUS.inBattle = 0; PLU.battleData = null; PLU.STATUS.isBusy = false; if (PLU.TMP.loopUseSkill) { clearInterval(PLU.TMP.loopUseSkill); PLU.TMP.loopUseSkill = null; } break; default: break; } if (PLU.STATUS.inBattle == 1 && !PLU.TMP.loopUseSkill) { PLU.TMP.loopUseSkill = setInterval(function () { if (PLU.STATUS.inBattle == 1 && PLU.battleData && PLU.battleData.xdz > 1) { PLU.checkUseSkills(); } }, 250); } } if (g_gmain.is_fighting && PLU.STATUS.inBattle == 1) { if (type == "vs" || type == "attrs_changed") { //自动疗伤及自动技能 if (PLU.battleData && PLU.battleData.xdz > 1 && PLU.STATUS.inBattle == 1) { PLU.checkUseSkills(); } } } }); //监听场景消息 UTIL.addSysListener("listenNotice", function (b, type, subtype, msg) { if (type != "notice" && type != "main_msg") return; if (msg.match(/闲聊|告诉|队伍/)) return; var msgTxt = UTIL.filterMsg(msg); if (msgTxt.match("你打坐完毕") && PLU.getCache("autoDZ") == 1) { if (UTIL.inHome()) clickButton("exercise", 0); else PLU.TODO.push({ type: "cmds", cmds: "exercise", timeout: new Date().getTime() + 8 * 60 * 60 * 1000 }); } else if ((msgTxt.match("你从寒玉床上爬起") || msgTxt.match("你从地髓石乳中出来")) && PLU.getCache("autoHYC") == 1) { if (UTIL.inHome()) PLU.execActions("golook_room;sleep_hanyuchuang;home"); else PLU.TODO.push({ type: "cmds", cmds: "golook_room;sleep_hanyuchuang;home", timeout: new Date().getTime() + 8 * 60 * 60 * 1000 }); } else if ((msgTxt.match("你停止了修炼。")) && PLU.getCache("autoHYC") == 1) { if (UTIL.inHome()) PLU.execActions("xls practice;"); else PLU.TODO.push({ type: "cmds", cmds: "xls practice;", timeout: new Date().getTime() + 8 * 60 * 60 * 1000 }); } else if ((msgTxt.match("你今天江湖悬红榜任务数量已经达到上限,请明天再来吧。")) && PLU.getCache("autoHYC") == 1) { PLU.execActions("items use obj_xuankongling;log?继续刷;"); } else if (msgTxt.match("你今天使用九花玉露丸次数已经达到上限了")) { YFUI.writeToOut("<span style='color:yellow;'>九花玉露丸次数已达到上限!取消监听九花玉露丸...</span>"); PLU.setListen($("#btn_bt_auto9H"), "auto9H", 0); } else if (msgTxt.match("九花玉露丸效果:") && PLU.getCache("auto9H") == 1) { PLU.execActions("items use obj_jiuhuayulouwan"); /* xls practice //开始闭关 } else if((msgTxt.match("获得:力贯九天丸x1") || msgTxt.match("获得:力贯九天丸x1")) && PLU.getCache("autoFD") == 1){ PLU.execActions("fudi houshan fetch;fudi shennong fetch;fudi shennong make 1;fudi shennong make 2;fudi shennong make 3;fudi shennong make 4;fudi shennong make 5;"); YFUI.writeToOut("<span style='color:yellow;'>====收获府邸完成====</span>"); } else if (msgTxt.match("毒发作了!") && !g_gmain.is_fighting) { var faminame = g_obj_map.get("msg_attrs") && g_obj_map.get("msg_attrs").get("family_name"); if (faminame !== "铁雪山庄") { PLU.execActions("items use ice lotus"); //解毒 } */ } else if (type == "notice" && msg.indexOf("每日武林知识问答次数已经达到限额")>-1) { PLU.execActions("home;"); } else if (msgTxt.match("病人终于心满意足")) { PLU.execActions("event_1_12050280;"); } else if (msgTxt.match("本届比武大会第一名")) { if (UTIL.inHome()) clickButton("swords get_drop go;home;", 0); else PLU.TODO.push({ type: "cmds", cmds: "swords get_drop go;home;", timeout: new Date().getTime() + 8 * 60 * 60 * 1000 }); } else if (msgTxt.includes("领取(.*)周奖励获得") || msgTxt.includes("领取(.*)通关奖励获得")) { if (!msgTxt.includes("拱辰楼") || !msgTxt.includes("试炼塔")) { PLU.execActions("=300;home;"); } } else if (msgTxt.includes("今天的游戏次数已达到上限了")) { PLU.execActions(";home"); YFUI.writeToOut("<span style='color:yellow;'>---次数用完,明天再来---</span>"); } else if (msgTxt.includes("你走着走着,不知不觉来到了(.*)楼")) { // curName == "风花楼" ||curName == "雪月楼" ||curName == "双树楼" PLU.execActions("ak;=500;ka;"); } else if (msgTxt.match(/此技能已经达到500级了/) && PLU.getCache("autoLX") == 1) { if (UTIL.inHome()) PLU.autoLianXi(); } else if (msgTxt.match(/你的(.*)成功向前突破了/) && PLU.getCache("autoTP") == 1) { if (UTIL.inHome()) PLU.toToPo(); else { var checktp = PLU.TODO.find(function (e) { return e.cmds == "toToPo"; }); if (!checktp) PLU.TODO.push({ type: "func", cmds: "toToPo", timeout: new Date().getTime() + 8 * 60 * 60 * 1000 }); } } else if (msgTxt.match("你现在正突破") && msgTxt.match("同时突破") || msgTxt.match("此次突破需要")) { //突破失败 PLU.TMP.stopToPo = true; } else if (msgTxt.match("青龙会组织:")) { //本服青龙 var l = msgTxt.match(/青龙会组织:(.*)正在\003href;0;([\w\d\s]+)\003(.*)\0030\003施展力量,本会愿出(.*)的战利品奖励给本场战斗的最终获胜者。/); if (l && l.length > 3) { UTIL.log({ msg: "【青龙】" + l[3].padStart(5) + " - " + l[1].padEnd(4) + " 奖品:" + l[4], type: "QL", time: new Date().getTime() }); if (PLU.getCache("listenQL") == 1) { var keysStr = PLU.getCache("listenQL_keys").split("|")[1].split(",").map(function (e) { return e == "*" ? ".*" : e.replace("*", "\\*"); }).join("|"); var reg = new RegExp(keysStr); if (l[4].match(reg) && UTIL.inHome()) { PLU.goQinglong(l[1], l[3], PLU.getCache("listenQL_keys").split("|")[0], false); } } } } else if (msgTxt.match("这是你今天完成的第")) { //逃犯完成 var _l = msgTxt.match(/这是你今天完成的第(\d)\/\d场逃犯任务/); if (_l && _l.length > 0 && _l[1] == 5) { YFUI.writeToOut('<span style="color:yellow;">逃犯任务已达到上限!取消逃犯监听...</span>'); UTIL.log({ msg: " 逃犯任务已达到上限!取消逃犯监听...", type: "TIPS", time: new Date().getTime() }); PLU.setListen($("#btn_bt_listenTF"), "listenTF", 0); } } else if (msgTxt.match("对你悄声道:你现在去") && !PLU.TMP.autoQixiaMijing) { //奇侠说秘境 var _l2 = msgTxt.match(/(.*)对你悄声道:你现在去(.*),应当会有发现/); if (_l2 && _l2.length > 2) { var placeData = PLU.YFD.mjList.find(function (e) { return e.n == _l2[2]; }); if (placeData) { YFUI.writeToOut("<span>奇侠秘境: <a style='text-decoration:underline;color:yellow;cursor:pointer;' onclick='PLU.execActions(\"" + placeData.v + "\")'>" + placeData.n + "</a></span>"); YFUI.showPop({ title: "奇侠秘境", text: "秘境:" + placeData.n, okText: "去秘境", onOk: function onOk() { PLU.execActions(placeData.v + ";find_task_road secret;", function () { YFUI.writeToOut("<span>:: <a style='text-decoration:underline;color:yellow;cursor:pointer;' onclick='clickButton(\"open jhqx\", 0)'>奇侠列表</a></span>"); }); }, onNo: function onNo() { } }); } } } else if (msgTxt.match("你赢了这场宝藏秘图之战!")) { PLU.execActions("clan bzmt puzz"); } else if (msgTxt.match("开启了帮派副本")) { if (PLU.getCache("autoBF") == 1) { //帮四开启 var ll = msg.match(/开启了帮派副本.*十月围城.*【(.*)】/); if (ll) { var n = "一二三".indexOf(ll[1]); UTIL.log({ msg: "【帮四】帮四(" + ll[1] + ")开启 ", type: "BF", time: new Date().getTime() }); if (n >= 0) { if (!g_gmain.is_fighting) { PLU.toBangFour(n + 1); } else { var checktodo = PLU.TODO.find(function (e) { return e.cmds == "toBangFour"; }); if (!checktodo) PLU.TODO.push({ type: "func", cmds: "toBangFour", param: n + 1, timeout: new Date().getTime() + 5 * 60 * 1000 }); } } } } if (PLU.getCache("autoB6") == 1) { //帮六开启 var ls = msg.match(/开启了帮派副本.*蛮荒七神寨.*/); if (ls) { if (!g_gmain.is_fighting) { PLU.toBangSix(); } else { var _checktodo = PLU.TODO.find(function (e) { return e.cmds == "toBangSix"; }); if (!_checktodo) PLU.TODO.push({ type: "func", cmds: "toBangSix", param: "", timeout: new Date().getTime() + 5 * 60 * 1000 }); } } } } else if (msgTxt.match("十月围城】帮派副本胜利")) { //帮四完成 PLU.STO.bangFourTo && clearTimeout(PLU.STO.bangFourTo); if (!g_gmain.is_fighting) { setTimeout(function () { PLU.execActions("home;"); }, 2000); } } else if (msgTxt.match("蛮荒七神寨】帮派副本胜利")) { //帮六完成 PLU.STO.bangSixTo && clearTimeout(PLU.STO.bangSixTo); if (!g_gmain.is_fighting) { setTimeout(function () { PLU.execActions("home;"); }, 2000); } } else if (msgTxt.match("你今天进入此副本的次数已达到上限了")) { //帮四六无法进入 PLU.STO.bangFourTo && clearTimeout(PLU.STO.bangFourTo); PLU.STO.bangSixTo && clearTimeout(PLU.STO.bangSixTo); UTIL.log({ msg: " !!副本超量!!", type: "TIPS", time: new Date().getTime() }); } else if (msgTxt.match(/你已进入帮派副本\*\*可汗金帐\*\*/) && PLU.getCache("autoB5F") == 1) { //帮五进入 PLU.inBangFiveEvent(); } else if (msgTxt.match("成功消灭了守将府内的所有敌人")) { //帮二完成 var _l3 = msgTxt.match(/守城成功】(.*)成功消灭了守将府内的所有敌人,帮派副本完成/); if (_l3 && _l3.length > 1 && !g_gmain.is_fighting) { setTimeout(function () { PLU.execActions("home;"); }, 3000); } } else if (msgTxt.match("你没有精良鱼饵,无法钓鱼")) { //钓鱼完成 if (!UTIL.inHome() && !g_gmain.is_fighting) { if (PLU.getCache("autoDY") == 1) { var attr = g_obj_map.get("msg_attrs"); if (attr.get("yuanbao") >= PLU.getCache("autoDY_key") + 50) PLU.execActions("shop buy shop45_N_10;diaoyu;"); else setTimeout(function () { PLU.execActions("home;"); PLU.setCache("autoDY", 0); }, 1000); } } else setTimeout(function () { PLU.execActions("home;"); PLU.setCache("autoDY", 0); }, 1000); } else if (msgTxt.match("你没有茶篓,无法采茶")) { //采茶完成 if (!UTIL.inHome() && !g_gmain.is_fighting) { if (PLU.getCache("autoCaicha") == 1) { var attr = g_obj_map.get("msg_attrs"); if (attr.get("yuanbao") >= PLU.getCache("autoCaicha_key") + 50) PLU.execActions("shop buy shop44_N_10;diaoyu;"); else setTimeout(function () { PLU.execActions("home;"); PLU.setCache("autoCaicha", 0); YFUI.writeToOut("<span style='color:yellow;'>=====完成采茶=====</span>"); }, 1000); } } else setTimeout(function () { PLU.execActions("home;"); PLU.setCache("autoCaicha", 0); }, 1000); } else if (msgTxt.match("你今天采得太多了,明天再来吧...")) { //采茶完成 PLU.execActions("home;"); PLU.setCache("autoCaicha", 0); YFUI.writeToOut("<span style='color:yellow;'>=====完成采茶=====</span>"); } }); //监听频道消息 UTIL.addSysListener("listenChannel", function (b, type, subtype, msg) { if (type != "channel" || subtype != "sys") return; var msgTxt = UTIL.filterMsg(msg); //本服逃犯 if (msgTxt.match("慌不择路") && msgTxt.indexOf("跨服") < 0) { var l = msgTxt.match(/系统】([一-龥|\*]+).*慌不择路,逃往了(.*)-\003href;0;([\w\d\s]+)\003([一-龥]+)/); if (l && l.length > 4) { UTIL.log({ msg: "【逃犯】" + l[2] + "-" + l[4] + " : " + l[1], type: "TF", time: new Date().getTime() }); //111 if (PLU.getCache("listenTF") == 1 && UTIL.inHome()) { if (!PLU.TMP.lis_TF_list) { PLU.splitTFParam(); } if (PLU.TMP.lis_TF_list.includes(l[1])) { var idx = PLU.TMP.lis_TF_list.findIndex(function (k) { return k == l[1]; }); if (idx >= 0) { var gb = Number(PLU.getCache("listenTF_keys").split("|")[0]) || 0; PLU.goTaofan(l[1], l[2], l[3], gb, PLU.TMP.lis_TF_force[idx]); } } } } } else if (msgTxt.match("跨服时空")) { //广场青龙 var _l4 = msgTxt.match(/跨服:(.*)逃到了跨服时空(.*)之中,青龙会组织悬赏(.*)惩治恶人,众位英雄快来诛杀。/); if (_l4 && _l4.length > 3) { UTIL.log({ msg: "【跨服青龙】" + _l4[2] + " - " + _l4[1].padEnd(8) + " 奖品:" + _l4[3], type: "KFQL", time: new Date().getTime() }); if (PLU.getCache("listenKFQL") == 1) { var keysStr = PLU.getCache("listenKFQL_keys").split("|")[1].split(",").map(function (e) { return e == "*" ? ".*" : e.replace("*", "\\*"); }).join("|"); var reg = new RegExp(keysStr); if (PLU.developerMode && _l4[3].match(reg) && UTIL.inHome()) { UTIL.addSysListener("KuaFu", function (b, type, subtype, msg) { if (b.get("map_id") == "kuafu") { UTIL.delSysListener("KuaFu"); PLU.goQinglong(_l4[1], _l4[2], PLU.getCache("listenKFQL_keys").split("|")[0], true); } }); setTimeout(function () { clickButton("change_server world;"); }, 500); } } } } else if (msgTxt.match("江湖纷争")) { //江湖纷争 var fz = msgTxt.match(/【江湖纷争】:(.*)(门派|流派)的(.*)剑客伤害同门,欺师灭组,判师而出,却有(.*)坚持此种另有别情而强行庇护,两派纷争在(.*)-(.*)一触即发,江湖同门速速支援!/); if (!fz) return; var ro = fz[3]; var pl = fz[5] + "-" + fz[6]; var vs = fz[1] + " VS " + fz[4]; var tp = fz[2]; var logType = tp == "门派" ? "MPFZ" : "LPFZ"; UTIL.log({ msg: "【" + tp + "之争】 " + ro + " 地点:[" + pl + "] " + vs, type: logType, time: new Date().getTime() }); if (tp == "门派") { var nowTime = new Date().getTime(); for (var k in PLU.MPFZ) { if (k < nowTime) delete PLU.MPFZ[k]; } var extime = new Date().getTime() + 1560000; PLU.MPFZ[extime] = { n: ro, p: pl, v: vs, t: new Date().getTime() }; UTIL.setMem("MPFZ", JSON.stringify(PLU.MPFZ)); } } else if (msgTxt.match("出来闯荡江湖了")) { //游侠 var yx = msgTxt.match(/【系统】游侠会:听说(.*)出来闯荡江湖了,目前正在前往(.*)的路上/); if (!yx) return; var yn = $.trim(yx[1]); var yp = yx[2]; var yr = ""; PLU.YFD.youxiaList.forEach(function (g) { if (g.v.includes(yn)) yr = g.n; }); UTIL.log({ msg: "【游侠-" + yr + "】 " + yn + " 地点:[" + yp + "] ", type: "YX", time: new Date().getTime() }); if (PLU.getCache("listenYX") == 1 && UTIL.inHome()) { if (!PLU.TMP.listenYX_list) { PLU.TMP.listenYX_list = PLU.getCache("listenYX_keys").split(","); } if (PLU.TMP.listenYX_list && PLU.TMP.listenYX_list.includes(yn)) { var jhName = PLU.fixJhName(yp); var jhMap = PLU.YFD.mapsLib.Map.find(function (e) { return e.name == jhName; }); if (!jhMap) return; else { var ways = jhMap.way.split(";"); PLU.goFindYouxia({ paths: ways, idx: 0, objectNPC: yn }); } } } } }); //监听场景 UTIL.addSysListener("listenRoomInfo", function (b, type, subtype, msg) { if (type == "prompt" && msg.indexOf("想要加入你的") >= 0) { PLU.execActions(b.get("cmd1")); PLU.execActions("prev;prev"); } if (type == "notice" && subtype == "notify_fail" && msg.indexOf("必须杀完所有的怪物才可以打开宝箱") >= 0) { PLU.execActions("ak;;ka;;event_1_68529291;"); } if (type == "notice" && msg.indexOf("完成子关卡*八戒神殿*获得武林名望值x50") >= 0) { var mapNamefb = UTIL.filterMsg(g_obj_map.get("msg_room").get("short")); if (mapNamefb.match(/本源之心/)) { setTimeout(function () { PLU.execActions("home;"); }, 2500); } } if (type != "jh") return; //奇侠加按钮 $("#out .out>button.cmd_click3").each(function (i, e) { if (PLU.YFD.qixiaList.includes(e.innerText)) { var snpc = e.outerHTML.match(/clickButton\('look_npc (\w+)'/i); if (snpc && snpc.length >= 2) { $(e).css({ position: "relative" }); var $btnAsk = $('<span style="position:absolute;display:inline-block;left:0;top:0;padding:3% 5%;text-align:center;background:#39F;color:#fff;border-radius:3px;font-size:1.2em;">问<span>'); var $btnGold = $('<span style="position:absolute;display:inline-block;right:0;bottom:0;padding:3% 5%;text-align:center;background:#F93;color:#fff;border-radius:3px;font-size:1.2em;">金<span>'); $(e).append($btnAsk); $(e).append($btnGold); $btnAsk.click(function (e) { e.stopPropagation(); PLU.execActions("ask " + snpc[1] + ";"); }); $btnGold.click(function (e) { e.stopPropagation(); var ename = snpc[1].split("_")[0]; PLU.execActions("auto_zsjd20_" + ename + ";golook_room"); }); } } }); //监听入队灵鹫和塔 if (type == "jh" && subtype == "info" && PLU.getCache("autoQuitTeam") == 1) { var sn = g_obj_map.get("msg_room").get("short"); if (sn.match(/灵鹫宫(\D+)层/) || sn.match(/拱辰楼(\D+)层/) || sn.match(/陈异叔(\D+)层/) || sn.match(/无为寺(\D+)层/) || sn.match(/一品堂(\D+)层/) || sn.match(/名将堂(\D+)层/) || sn.match(/魔皇殿(\D+)层/) || sn.match(/藏典塔(\D+)层/) || sn.match(/无相楼(\D+)层/) || sn.match(/葬剑谷(\D+)层/) || sn.match(/霹雳堂(\D+)层/) || sn.match(/铸剑洞(\D+)层/) || sn.match(/剑楼(\D+)层/) || sn.match(/红螺寺(\D+)层/) || sn.match(/通天塔(\D+)层/)) { //退出队伍 var quitTeamPrevTimeOut = setTimeout(function () { UTIL.delSysListener("quitTeamPrev"); }, 5000); UTIL.addSysListener("quitTeamPrev", function (b, type, subtype, msg) { if (type == "team" && subtype == "info") { UTIL.delSysListener("quitTeamPrev"); clearTimeout(quitTeamPrevTimeOut); clickButton("prev"); } }); clickButton("team quit"); } } //刷新后恢复监听帮五 if (type == "jh" && subtype == "info" && PLU.TMP.listenBangFive == undefined) { var roomName = UTIL.filterMsg(g_obj_map.get("msg_room").get("short")); if (roomName.match(/蒙古高原|成吉思汗的金帐/)) { PLU.inBangFiveEvent(); } else { PLU.TMP.listenBangFive = false; } } return; }); /* UTIL.addSysListener("useCard", function (b, type, subtype, msg) { if (type == "notice" && subtype == "notify_fail" && msg.indexOf("今日已达到谜题数量限制。") >= 0) { PLU.execActions("items use obj_mitiling;#5 items use miticska"); } }); // 谜题密码 UTIL.addSysListener("key", (b, type, subtype, msg) => { if (type != "channel" || subtype != "tell") return; let key = msg.match(/告诉你:谜题密码:(\d+)/)[1]; if (key) PLU.TODO.push({ type: "cmds", cmds: "jh 1;e;n;n;n;n;w;event_1_65953349 " + key + ";home;", timeout: new Date().getTime() + 8 * 60 * 60 * 1000, }); }); */ // 监听闲聊 UTIL.addSysListener("listenChat", function (b, type, subtype, msg) { if (type != "channel" || subtype != "chat") return; /** UNICODE 15.0 * CJK Radicals Supplement 2E80–2EFF * CJK Unified Ideographs (Han) 4E00–9FFF * CJK Extension A 3400-4DBF * CJK Extension B 20000–2A6DF * CJK Extension C 2A700–2B739 * CJK Extension D 2B740–2B81D * CJK Extension E 2B820–2CEA1 * CJK Extension F 2CEB0–2EBE0 * CJK Extension G 30000–3134A * CJK Extension H 31350–323AF */ msg = msg.replace("\f", ""); var text = msg.match(/^[^:]+:.*?([⺀-㐀-䶿一-鿿\-,”'!!]+道:.+)\x1B\[2;37;0m/); if (text) { text = text[1]; if (text.match(/柴绍|李秀宁|大鹳淜洲/)) { /** * 李秀宁昨天捡到了我几十辆银子 * 李秀宁鬼鬼祟祟的叫人生疑 * 李秀宁竟对我横眉瞪眼的 * 竟然吃了李秀宁的亏 * 李秀宁竟敢得罪我 * 被李秀宁抢走了 * 李秀宁好大胆 * 想找李秀宁 * 藏在了(天龙寺-)?大鹳淜洲 * 想要一件天罗紫芳衣 */ UTIL.log({ msg: "【谜题-天命丹】" + text, type: "TIPS", time: new Date().getTime() }); } else if (text.match(/阴九幽|潜龙|谷底石室/)) { UTIL.log({ msg: "【谜题-鬼杀剑】" + text, type: "TIPS", time: new Date().getTime() }); } else if (text.match(/打坐老僧|牟尼楼|牟尼洞/)) { UTIL.log({ msg: "【谜题-700级读书识字】" + text, type: "TIPS", time: new Date().getTime() }); } else if (text.match(/本恒禅师|无相堂/)) { UTIL.log({ msg: "【谜题-木棉袈裟】" + text, type: "TIPS", time: new Date().getTime() }); } else if (text.match(/天罗紫芳衣/)) { UTIL.log({ msg: "【谜题-天命丹】" + text, type: "TIPS", time: new Date().getTime() }); } else if (text.match(/鬼杀剑|金凤翅盔/)) { UTIL.log({ msg: "【谜题-鬼杀剑】" + text, type: "TIPS", time: new Date().getTime() }); } else if (text.match(/麻布僧衣/)) { UTIL.log({ msg: "【谜题-700级读书识字】" + text, type: "TIPS", time: new Date().getTime() }); } else if (text.match(/追风棍|木棉袈裟/)) { UTIL.log({ msg: "【谜题-木棉袈裟】" + text, type: "TIPS", time: new Date().getTime() }); } } var text2 = msg.match(/[^:]+:(.+)\x1B\[2;37;0m/)[1]; if (PLU.getCache("listenChat") == 1 && text2 != "哈哈,我也来闯荡江湖啦!" && text2 != "哈哈,我去也……") YFUI.writeToOut(msg); var text3 = msg.match(/^[^:]+:(.+道):(.+)\x1B\[2;37;0m/); if (text3) var tmp = PLU.queryNpc(text3[1], true); else { var _text = msg.match(/^[^:]+:(.+)的谜题\x1B\[2;37;0m/); if (_text) var tmp = PLU.queryNpc(_text[1] + "道", true); } if (tmp && tmp.length && PLU.getCache("listenPuzzle") == 1) { PLU.TMP.autotask = true; var _iterator2 = _createForOfIteratorHelper(tmp), _step2; try { for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { var _ref, _npc$name_new; var npc = _step2.value; PLU.TODO.push({ type: "func", cmds: "execActions", param: [npc.way, function (code, name) { var npcObj = UTIL.findRoomNpc(name, 0, 1); if (npcObj) PLU.execActions("ask " + npcObj.key); }, (_ref = (_npc$name_new = npc.name_new) !== null && _npc$name_new !== void 0 ? _npc$name_new : npc.name_tw) !== null && _ref !== void 0 ? _ref : npc.name], timeout: new Date().getTime() + 15 * 60 * 1000 }); } } catch (err) { _iterator2.e(err); } finally { _iterator2.f(); } } }); //----------监听练习---------------------------- UTIL.addSysListener("listenPractice", function (b, type, subtype, msg) { if (type == "practice" && subtype == "stop_practice" && PLU.getCache("autoLX") == 1) { var skillId = b.get("sid"), lxcmds = "enable " + skillId + ";practice " + skillId; if (UTIL.inHome()) PLU.execActions(lxcmds); else PLU.TODO.push({ type: "cmds", cmds: lxcmds, timeout: new Date().getTime() + 8 * 60 * 60 * 1000 }); } }); //---------------------------------------------- //---------------------------------------------- //监听剑阵 UTIL.addSysListener("listenJianzhen", function (b, type, subtype, msg) { if (type != "notice") return; if (msg.indexOf("阵升级完毕!") < 0) return; var msgTxt = UTIL.filterMsg(msg); if (msgTxt.match(/(.*)阵升级完毕!成功升级到/)) { setTimeout(function () { var _g_obj_map$get2; var jzcmds = "hhjz xiulian go;;;hhjz speedup go;"; var room = (_g_obj_map$get2 = g_obj_map.get("msg_room")) === null || _g_obj_map$get2 === void 0 ? void 0 : _g_obj_map$get2.get("short"); PLU.execActions(jzcmds); /* if (room == "桃溪" || room == "后山茶园" || UTIL.inHome()) PLU.execActions(jzcmds); else PLU.TODO.push({ type: "cmds", cmds: jzcmds, timeout: new Date().getTime() + 8 * 60 * 60 * 1000 }); */ }, 8000); } }); //监听跟杀 UTIL.addSysListener("listenFightKill", function (b, type, subtype, msg) { if (type != "main_msg" || !msg) return; if (msg.indexOf("对著") < 0) return; if (PLU.getCache("followKill") != 1) return; var msgTxt = UTIL.filterMsg(msg); var matchKill = msgTxt.match(/(.*)对著(.*)喝道:「(.*)!今日不是你死就是我活!」/); if (matchKill && $.trim(matchKill[1]) != "你" && $.trim(matchKill[2]) != "你" && !g_gmain.is_fighting) { PLU.toCheckFollowKill($.trim(matchKill[1]), $.trim(matchKill[2]), "kill", msgTxt); return; } var matchFight = msgTxt.match(/(.*)对著(.*)说道:(.*),领教(.*)的高招!/); if (matchFight && $.trim(matchFight[1]) != "你" && $.trim(matchFight[2]) != "你" && !g_gmain.is_fighting) { PLU.toCheckFollowKill($.trim(matchFight[1]), $.trim(matchFight[2]), "fight", msgTxt); return; } }); //test UTIL.addSysListener("testListener", function (b, type, subtype, msg) { if (type == "g_login" && subtype == "login_ret" && msg == "1") { YFUI.writeToOut("<span style='color:#FFF;background:#F00;'>[" + UTIL.getNow() + "] 断线重连了 </span>"); PLU.TMP.reConnectTime = 0; } }); UTIL.addSysListener("disconnect", function (b, type, subtype, msg) { if (type == "disconnect" && subtype == "change") { console.log("%c%s", "color:#F00", ">>>>>>>sock disconnected"); //sock && sock.close(); sock = 0 if (PLU.getCache("autoConnect") == 1) { var recTime = Number(PLU.getCache("autoConnect_keys")); if (recTime) g_gmain.g_delay_connect = recTime; } } }); unsafeWindow.sock.on("telnet_connected", function () { console.log("%c%s", "color:#0F0", ">>>>>>>sock connected"); }); UTIL.addSysListener("YXSkillsListener", function (b, type, subtype, msg) { if (type != "show_html_page") return; if (msg.indexOf("须传授技能") < 0) return; var list = msg.match(/\x1B\[1;36m(\d+)\/(\d+)[\s\S]{1,200}(fudi juxian up_skill .* 10)/g); var outList = null; if (list && list.length) { outList = list.map(function (s) { var r = s.match(/\x1B\[1;36m(\d+)\/(\d+)[\s\S]{1,200}(fudi juxian up_skill .* 10)/); return { lvl: r[1], max: r[2], cmd: r[3] + "0" }; }); } PLU.TMP.CUR_YX_SKILLS = outList; var matchNameLine = msg.match(/<span class="out2">([\s\S]+)<\/span><span class="out2">/); var npcNameLine = matchNameLine ? UTIL.filterMsg(matchNameLine[1]) : ""; var dg = npcNameLine.match(/(\d+)级/)[1]; PLU.TMP.CUR_YX_LEVEL = Number(dg); var nn = msg.match(/fudi juxian upgrade (\S+) 1/)[1]; PLU.TMP.CUR_YX_ENG = nn; }); UTIL.addSysListener("masterSkillsListener", function (b, type, subtype, msg) { if (type != "master_skills" || subtype != "list") return; var masterSkills = PLU.parseSkills(b); PLU.TMP.MASTER_ID = b.get("id"); PLU.TMP.MASTER_SKILLS = masterSkills; }); }, //================================================================================================ initTickTime: function initTickTime() { setInterval(function () { var nowDate = new Date(); var nowTime = nowDate.getTime(); if (PLU.TODO.length > 0 && !PLU.STATUS.isBusy && UTIL.inHome()) { //待办 var ctd = PLU.TODO.shift(); if (nowDate.getTime() < ctd.timeout) { if (ctd.type == "cmds") { PLU.execActions(ctd.cmds); } else if (ctd.type == "func") { var _PLU; if (ctd.param) (_PLU = PLU)[ctd.cmds].apply(_PLU, _toConsumableArray(ctd.param)); else PLU[ctd.cmds](); } } } if ($("#topMonitor").text() != "") $("#topMonitor").empty(); var bi = 0; for (var k in PLU.MPFZ) { if (k < nowTime) delete PLU.MPFZ[k]; else { var f = PLU.MPFZ[k]; var dt = Math.floor((k - nowTime) / 1000); var flo = bi % 2 == 1 ? "float:right;text-align:right;" : ""; $("#topMonitor").append('<div title="'.concat(f.v, '" style="display:inline-block;width:40%;').concat(flo, '">').concat(f.n.substr(0, 1), ' <span style="color:#9CF;">[').concat(f.p, ']</span> <span style="color:#DDD;">').concat(dt, "</span></div>")); bi++; } } if (PLU.ONOFF["btn_bt_waitCDKill"] && PLU.TMP.DATA_MPFZ) PLU.toCheckAndWaitCDKill(nowTime); }, 1000); }, //================================================================================================ toSignIn: function toSignIn() { var _PLU$getCache; if (!this.signInMaps) this.initSignInMaps(); var ckeds = ((_PLU$getCache = PLU.getCache("signInArray")) === null || _PLU$getCache === void 0 ? void 0 : _PLU$getCache.split(",")) || this.signInMaps.map(function (e, i) { return i; }); var htm = '<div style="display:flex;flex-direction:row;flex-wrap: wrap;justify-content: space-between;width: 100%;align-content: flex-start;line-height:2;">'; this.signInMaps.forEach(function (e, i) { if (!e.n) htm += '<span style="width:92px;"> </span>'; else htm += '<span><button class="signInBtn" data-sid="'.concat(i, '" style="font-size:12px;padding:1px 2px;cursor:pointer;">GO</button>\n <label data-id="').concat(i, '" style="font-size:13px;margin:0 3px 5px 0;">').concat(e.n, '<input type="checkbox" name="signInId" value="').concat(i, '"\n ').concat(ckeds.includes(i + "") || e.f ? "checked" : "", " ").concat(e.f ? "disabled" : "", " /></label></span>"); }); htm += '</div><button class="signInAll" style="cursor:pointer;position:absolute;left:15px;bottom:10px;">全选</button>'; YFUI.showPop({ title: "签到", text: htm, width: "360px", okText: "一键签到", onOk: function onOk(e) { var checkeds = []; e.find('input[name="signInId"]:checked').each(function (i, b) { checkeds.push(b.value); }); PLU.setCache("auto9H", 1); PLU.setCache("signInArray", checkeds.join(",")); PLU.goSign(checkeds); }, onNo: function onNo() { }, afterOpen: function afterOpen($el) { $el.find(".signInBtn").click(function (e) { var btnSid = $(e.currentTarget).attr("data-sid"); PLU.goSign(btnSid); }); $el.find(".signInAll").click(function (e) { $el.find('input[name="signInId"]').each(function () { $(this).prop("checked", true); }); }); } }); }, //================================================================================================ toricrw: function toricrw() { var _PLU$getCache2; if (!this.rcrenwu) this.initrichangrenwu(); var ckeds = ((_PLU$getCache2 = PLU.getCache("signInArrayrc")) === null || _PLU$getCache2 === void 0 ? void 0 : _PLU$getCache2.split(",")) || this.rcrenwu.map(function (e, i) { return i; }); var htm = '<div style="display:flex;flex-direction:row;flex-wrap: wrap;justify-content: space-between;width: 100%;align-content: flex-start;line-height:2;">'; this.rcrenwu.forEach(function (e, i) { if (!e.n) htm += '<span style="width:92px;"> </span>'; else htm += '<span><button class="signInBtn" data-sid="'.concat(i, '" style="font-size:12px;padding:1px 2px;cursor:pointer;">GO</button>\n <label data-id="').concat(i, '" style="font-size:13px;margin:0 3px 5px 0;">').concat(e.n, '<input type="checkbox" name="signInId" value="').concat(i, '"\n ').concat(ckeds.includes(i + "") || e.f ? "checked" : "", " ").concat(e.f ? "disabled" : "", " /></label></span>"); }); htm += '</div><button class="signInAll" style="cursor:pointer;position:absolute;left:15px;bottom:10px;">全选</button>'; YFUI.showPop({ title: "日常周常", text: htm, width: "360px", okText: "开始", onOk: function onOk(e) { var checkeds = []; e.find('input[name="signInId"]:checked').each(function (i, b) { checkeds.push(b.value); }); PLU.setCache("signInArrayrc", checkeds.join(",")); PLU.goSign(checkeds, true); }, onNo: function onNo() { }, afterOpen: function afterOpen($el) { $el.find(".signInBtn").click(function (e) { var btnSid = $(e.currentTarget).attr("data-sid"); PLU.goSign(btnSid, true); }); $el.find(".signInAll").click(function (e) { $el.find('input[name="signInId"]').each(function () { $(this).prop("checked", true); }); }); } }); }, //================================================================================================ autoSwords: function autoSwords(callback) {//论剑 UTIL.addSysListener("sword", function (b, type, subtype, msg) { if (type != "notice" || msg.indexOf("试剑") == -1) return; if (msg.indexOf("5/5") > 0 || !msg.indexOf("你今天试剑次数已达限额")) { UTIL.delSysListener("sword"); callback && callback(); } else PLU.execActions("swords fight_test go"); }); PLU.execActions("swords;swords select_member heimuya_dfbb;swords select_member qingcheng_mudaoren;swords select_member tangmen_madam;swords fight_test go"); }, //================================================================================================ autoGetVipReward: function autoGetVipReward(callback) { var _vipInfo$get, _vipInfo$get2, _vipInfo$get3, _vipInfo$get4, _vipInfo$get5, _vipInfo$get6, _vipInfo$get7, _vipInfo$get8, _vipInfo$get9, _vipInfo$get10, _vipInfo$get11; var acts = ""; var vipInfo = g_obj_map.get("msg_vip"); if (vipInfo.get("get_vip_drops") == 0) acts += "vip drops;"; if (vipInfo.get("finish_sort") % 1000 < 5) acts += "#5 vip finish_sort;"; if (vipInfo.get("finish_dig") % 1000 < 10) acts += "#10 vip finish_dig;"; if (vipInfo.get("finish_diaoyu") % 1000 < 10) acts += "#10 vip finish_diaoyu;"; if (vipInfo.get("do_task_num") % 1000 < 10) acts += "#10 vip finish_big_task;"; if (vipInfo.get("family_quest_count") % 1000 < 25) acts += "#25 vip finish_family;"; if (vipInfo.get("finish_fenzheng") % 1000 < 5) acts += "#5 vip finish_fenzheng;"; if (g_obj_map.get("msg_clan_view") && vipInfo.get("clan_quest_count") % 1000 < 20) acts += "#20 vip finish_clan;"; if ((_vipInfo$get = vipInfo.get("saodang_fb_1")) !== null && _vipInfo$get !== void 0 && _vipInfo$get.split(",")[2] || 0 % 1000 < 4) acts += "#4 vip finish_fb dulongzhai;"; if ((_vipInfo$get2 = vipInfo.get("saodang_fb_2")) !== null && _vipInfo$get2 !== void 0 && _vipInfo$get2.split(",")[2] || 0 % 1000 < 4) acts += "#4 vip finish_fb junying;"; if ((_vipInfo$get3 = vipInfo.get("saodang_fb_3")) !== null && _vipInfo$get3 !== void 0 && _vipInfo$get3.split(",")[2] || 0 % 1000 < 4) acts += "#4 vip finish_fb beidou;"; if ((_vipInfo$get4 = vipInfo.get("saodang_fb_4")) !== null && _vipInfo$get4 !== void 0 && _vipInfo$get4.split(",")[2] || 0 % 1000 < 4) acts += "#4 vip finish_fb youling;"; if ((_vipInfo$get5 = vipInfo.get("saodang_fb_5")) !== null && _vipInfo$get5 !== void 0 && _vipInfo$get5.split(",")[2] || 0 % 1000 < 3) acts += "#3 vip finish_fb siyu;"; if ((_vipInfo$get6 = vipInfo.get("saodang_fb_6")) !== null && _vipInfo$get6 !== void 0 && _vipInfo$get6.split(",")[2] || 0 % 1000 < 3) acts += "#3 vip finish_fb changleweiyang;"; if ((_vipInfo$get7 = vipInfo.get("saodang_fb_7")) !== null && _vipInfo$get7 !== void 0 && _vipInfo$get7.split(",")[2] || 0 % 1000 < 3) acts += "#3 vip finish_fb heishuihuangling;"; if ((_vipInfo$get8 = vipInfo.get("saodang_fb_8")) !== null && _vipInfo$get8 !== void 0 && _vipInfo$get8.split(",")[2] || 0 % 1000 < 3) acts += "#3 vip finish_fb jiandangfenglingdu;"; if ((_vipInfo$get9 = vipInfo.get("saodang_fb_9")) !== null && _vipInfo$get9 !== void 0 && _vipInfo$get9.split(",")[2] || 0 % 1000 < 3) acts += "#3 vip finish_fb tianshanlongxue;"; if ((_vipInfo$get10 = vipInfo.get("saodang_fb_10")) !== null && _vipInfo$get10 !== void 0 && _vipInfo$get10.split(",")[2] || 0 % 1000 < 3) acts += "#3 vip finish_fb sizhanguangmingding;"; if ((_vipInfo$get11 = vipInfo.get("saodang_fb_11")) !== null && _vipInfo$get11 !== void 0 && _vipInfo$get11.split(",")[2] || 0 % 1000 < 3) acts += "#3 vip finish_fb bajieshendian;"; acts += "home;"; PLU.execActions(acts, function () { callback && callback(); }); }, autoShaodan: function autoShaodan(callback) { var _vipInfo$get12, _vipInfo$get13, _vipInfo$get14, _vipInfo$get15, _vipInfo$get16, _vipInfo$get17, _vipInfo$get18, _vipInfo$get19, _vipInfo$get20, _vipInfo$get21, _vipInfo$get22; var acts = ""; var vipInfo = g_obj_map.get("msg_vip"); var isVip = vipInfo.get("vip_tm") > 0; if ((_vipInfo$get12 = vipInfo.get("saodang_fb_1")) !== null && _vipInfo$get12 !== void 0 && _vipInfo$get12.split(",")[2] || 0 % 1000 < 4) { if (isVip) acts += "#4 vip finish_fb dulongzhai;"; else acts += "team create;fb 1;;ak;n;;n;;n;;n;;ka;" + "team create;fb 1;;ak;n;;n;;n;;n;;ka;"; } if ((_vipInfo$get13 = vipInfo.get("saodang_fb_2")) !== null && _vipInfo$get13 !== void 0 && _vipInfo$get13.split(",")[2] || 0 % 1000 < 4) if (isVip) acts += "#4 vip finish_fb junying;"; else acts += "team create;fb 2;;ak;;e;n;event_1_48728674;fb 2;e;s;event_1_41361248;fb 2;e;e;;event_1_43484736;;ka;@赫造基的尸体;@严廷殷的尸体;" + "team create;fb 2;;ak;;e;n;event_1_48728674;fb 2;e;s;event_1_41361248;fb 2;e;e;;event_1_43484736;;ka;@赫造基的尸体;@严廷殷的尸体;"; if ((_vipInfo$get14 = vipInfo.get("saodang_fb_3")) !== null && _vipInfo$get14 !== void 0 && _vipInfo$get14.split(",")[2] || 0 % 1000 < 4) { if (isVip) acts += "#4 vip finish_fb beidou;"; else acts += "team create;fb 3;w;;ak;e;s;;n;e;;event_1_9777898;;ka;@天枢剑客的尸体;" + "team create;fb 3;w;;ak;e;s;;n;e;;event_1_9777898;;ka;@天枢剑客的尸体;"; } if ((_vipInfo$get15 = vipInfo.get("saodang_fb_4")) !== null && _vipInfo$get15 !== void 0 && _vipInfo$get15.split(",")[2] || 0 % 1000 < 4) { if (isVip) acts += "#4 vip finish_fb youling;"; else acts += "team create;fb 4;n;;ak;n;;n;;n;;n;;ka;" + "team create;fb 4;n;;ak;n;;n;;n;;n;;ka;"; } if ((_vipInfo$get16 = vipInfo.get("saodang_fb_5")) !== null && _vipInfo$get16 !== void 0 && _vipInfo$get16.split(",")[2] || 0 % 1000 < 3) { if (isVip) acts += "#3 vip finish_fb siyu;"; else acts += "team create;fb 5;event_1_26662342;ak;se;;nw;nw;event_1_15727082;;nw;;se;se;event_1_12238479;;sw;;ne;ne;event_1_889199;;ne;;sw;sw;;;;;;;event_1_77337496;;ka;"; } if ((_vipInfo$get17 = vipInfo.get("saodang_fb_6")) !== null && _vipInfo$get17 !== void 0 && _vipInfo$get17.split(",")[2] || 0 % 1000 < 3) { if (isVip) acts += "#3 vip finish_fb changleweiyang;"; else acts += "team create;fb 6;event_1_94101353;ak;event_1_8221898;;event_1_18437151;;event_1_74386803;;event_1_39816829;event_1_92691681;event_1_19998221;event_1_62689078;;event_1_85127800;;ask changleweiyang_jiangzuodajiang;event_1_39026868;;s;;ka;"; } if ((_vipInfo$get18 = vipInfo.get("saodang_fb_7")) !== null && _vipInfo$get18 !== void 0 && _vipInfo$get18.split(",")[2] || 0 % 1000 < 3) if (isVip) acts += "#3 vip finish_fb heishuihuangling;"; else acts += "team create;fb 7;event_1_20980858;;ak;fb 7;event_1_81463220;;fb 7;event_1_5770640;;fb 7;event_1_56340108;;event_1_21387224;s;;ka;event_1_94902320;"; if ((_vipInfo$get19 = vipInfo.get("saodang_fb_8")) !== null && _vipInfo$get19 !== void 0 && _vipInfo$get19.split(",")[2] || 0 % 1000 < 3) if (isVip) acts += "#3 vip finish_fb jiandangfenglingdu;"; else acts += "team create;fb 8;ak;n;n;fb 8;e;e;fb 8;w;w;fb 8;s;s;event_1_28034211;ka;event_1_17257217;"; if ((_vipInfo$get20 = vipInfo.get("saodang_fb_9")) !== null && _vipInfo$get20 !== void 0 && _vipInfo$get20.split(",")[2] || 0 % 1000 < 3) if (isVip) acts += "#3 vip finish_fb tianshanlongxue;"; else acts += "team create;fb 9;;ak;n;;n;;n;;n;;n;;ka;"; if ((_vipInfo$get21 = vipInfo.get("saodang_fb_10")) !== null && _vipInfo$get21 !== void 0 && _vipInfo$get21.split(",")[2] || 0 % 1000 < 3) if (isVip) acts += "#3 vip finish_fb sizhanguangmingding;"; else acts += "team create;fb 10;;ak;n;;n;;n;;n;;n;;ka;"; if ((_vipInfo$get22 = vipInfo.get("saodang_fb_11")) !== null && _vipInfo$get22 !== void 0 && _vipInfo$get22.split(",")[2] || 0 % 1000 < 3) if (isVip) acts += "#3 vip finish_fb bajieshendian;"; else acts += "team create;fb 11;;ak;n;;n;;n;;n;;n;;ka;"; acts += "home;"; PLU.execActions(acts, function () { callback && callback(); }); }, //================================================================================================ getClanInfo: function getClanInfo(callback) { var openClanTimeout = setTimeout(function () { UTIL.delSysListener("listenOpenClan"); callback && callback(0); }, 5000); UTIL.addSysListener("listenOpenClan", function (b, type, subtype, msg) { if (type == "clan") { UTIL.delSysListener("listenOpenClan"); clearTimeout(openClanTimeout); clickButton("prev"); //console.log(g_obj_map.get("msg_clan_view")) callback && callback(1); } }); clickButton("clan"); }, getVipInfo: function getVipInfo(callback) { var openVipTimeout = setTimeout(function () { UTIL.delSysListener("listenOpenVip"); callback && callback(0); }, 5000); UTIL.addSysListener("listenOpenVip", function (b, type, subtype, msg) { if (type == "vip") { UTIL.delSysListener("listenOpenVip"); clearTimeout(openVipTimeout); clickButton("prev"); //console.log(g_obj_map.get("msg_vip")) callback && callback(1); } }); clickButton("vip"); }, //================================================================================================ goSign: function goSign(param, rcrenwu) { if (!param) { return YFUI.writeToOut("<span style='color:#FFF;'>=====结束====记得换套装哦==</span>"); } else if (param.length == 0) { return YFUI.writeToOut("<span style='color:#FFF;'>=====签到结束====记得换套装哦==</span>"); } var sid = null; if (_typeof(param) == "object") { sid = param.shift(); } else { sid = param; param = null; } var signD = (rcrenwu ? PLU.rcrenwu : PLU.signInMaps)[sid]; if (signD.c != undefined) { if (signD.c()) { if (signD.fn) { signD.fn(function () { PLU.goSign(param, rcrenwu); }); } else if (signD.go) { PLU.execActions(signD.go, function () { PLU.goSign(param, rcrenwu); }); } } else { PLU.goSign(param, rcrenwu); } } else { if (signD.fn) { signD.fn(function () { PLU.goSign(param, rcrenwu); }); } else if (signD.go) { PLU.execActions(signD.go, function () { PLU.goSign(param, rcrenwu); }); } } }, //================================================================================================ initSignInMaps: function initSignInMaps() { var _this = this; this.getVipInfo(function (b) { _this.getClanInfo(function (a) { }); }); this.signInMaps = [{ n: "扬州签到", f: true, go: "jh 5;n;n;n;w;look_npc yangzhou_yangzhou4;sign7;home;" }, { n: "每日礼包", f: true, go: "jh 1;event_1_57222966;event_1_48246976;event_1_85373703;home;fudi houshan fetch;fudi juxian mpay;fudi juxian fetch_zhuguo;home;swords report go;" }, { n: "潜龙礼包", f: true, go: "jh 1;event_1_16472313;event_1_38436482;w;event_1_26383297;event_1_21318613;home;" }, { n: "分享奖励", f: true, go: "share_ok 1;share_ok 2;share_ok 3;share_ok 4;share_ok 5;share_ok 7;home;clan fb open shenshousenlin;clan fb open daxuemangongdao;clan fb open longwulianmoge;clan fb open_go2 kehanjinzhang2;" }, { n: "南诏投资", f: true, go: "jh 54;#4 nw;#2 w;#4 n;#2 e;n;#2 e;event_1_62143505 go;;;event_1_62143505 get;event_1_63750325 get;home;" }, { n: "消费积分", f: true, go: "jh 1;e;n;e;e;event_1_44731074;event_1_8041045;event_1_8041045;event_1_29721519;home;" }, { n: "打坐睡床", f: true, go: "home;exercise stop;exercise;golook_room;sleep_hanyuchuang;fudi shennong fetch;home;" }, { n: "买引路蜂", f: true, go: "shop money_buy mny_shop2_N_10;home;vip;" }, { n: "续约会员", go: "jh 1;event_1_45018293;home;" }, { n: "领取工资", f: true, go: "home;work click maikuli;work click duancha;work click dalie;work click baobiao;work click maiyi;work click xuncheng;work click datufei;work click dalei;work click kangjijinbin;work click zhidaodiying;work click dantiaoqunmen;work click shenshanxiulian;work click jianmenlipai;work click dubawulin;work click youlijianghu;work click yibangmaoxiang;work click zhengzhanzhongyuan;work click taofamanyi;public_op3;home;" }, { n: "爬楼奖励", f: true, go: "home;cangjian get_all;xueyin_shenbinggu blade get_all;xueyin_shenbinggu unarmed get_all;xueyin_shenbinggu throwing get_all;xueyin_shenbinggu spear get_all;xueyin_shenbinggu hammer get_all;xueyin_shenbinggu axe get_all;xueyin_shenbinggu whip get_all;xueyin_shenbinggu stick get_all;xueyin_shenbinggu staff get_all;home;" }, { n: "吃九花丸", go: "items use obj_jiuhuayulouwan;home;" }, { n: "银两上香", c: function c() { return !!g_obj_map.get("msg_clan_view"); }, go: "#20 clan incense yx;home;" }, { n: "VIP 福利", c: function c() { return g_obj_map.get("msg_vip") && g_obj_map.get("msg_vip").get("vip_tm") > 0 && g_obj_map.get("msg_vip").get("get_vip_drops") == 0; }, go: "vip drops;home;" }, { n: "VIP 暴击", c: function c() { return g_obj_map.get("msg_vip") && g_obj_map.get("msg_vip").get("vip_tm") > 0 && g_obj_map.get("msg_vip").get("do_task_num") % 1000 < 10; }, fn: PLU.saodbj }, { n: "VIP 师门", c: function c() { return g_obj_map.get("msg_vip") && g_obj_map.get("msg_vip").get("vip_tm") > 0 && g_obj_map.get("msg_vip").get("family_quest_count") % 1000 < 25; }, fn: PLU.saodsm }, { n: "VIP 帮派", c: function c() { return g_obj_map.get("msg_vip") && g_obj_map.get("msg_vip").get("vip_tm") > 0 && g_obj_map.get("msg_clan_view") && g_obj_map.get("msg_vip").get("clan_quest_count") % 1000 < 20; }, go: "#20 vip finish_clan;#3 clan fb go_saodang shenshousenlin;#3 clan fb go_saodang daxuemangongdao;#3 clan fb go_saodang longwulianmoge;#3 clan fb go_saodang kehanjinzhang2;" }, { n: "VIP 排行", c: function c() { return g_obj_map.get("msg_vip") && g_obj_map.get("msg_vip").get("vip_tm") > 0 && g_obj_map.get("msg_vip").get("finish_sort") % 1000 < 5; }, go: "#5 vip finish_sort;" }, { n: "VIP 寻宝", c: function c() { return g_obj_map.get("msg_vip") && g_obj_map.get("msg_vip").get("vip_tm") > 0 && g_obj_map.get("msg_vip").get("finish_dig") % 1000 < 10; }, go: "#10 vip finish_dig;" }, { n: "VIP 钓鱼", c: function c() { return g_obj_map.get("msg_vip") && g_obj_map.get("msg_vip").get("vip_tm") > 0 && g_obj_map.get("msg_vip").get("finish_diaoyu") % 1000 < 10; }, go: "#10 vip finish_diaoyu;" }, //{n:'VIP 扫荡',c:function(){return g_obj_map.get("msg_vip")&&g_obj_map.get("msg_vip").get("vip_tm")>0},fn:PLU.autoVipShaodan}, { n: "扫荡副本", fn: PLU.autoShaodan }, { n: "VIP 纷争", c: function c() { return g_obj_map.get("msg_vip") && g_obj_map.get("msg_vip").get("vip_tm") > 0 && g_obj_map.get("msg_vip").get("finish_fenzheng") % 1000 < 5; }, go: "#5 vip finish_fenzheng;" }, { n: "打小龙人", fn: PLU.saoxlr }, { n: "玄铁采矿", go: "jh 26;w;w;n;e;e;event_1_18075497;w;w;n;event_1_14435995;home;jh 35;nw;nw;nw;n;ne;nw;w;nw;e;e;e;e;e;se;n;n;w;n;w;event_1_53278632;sousuo;sousuo;home;" }, { n: "求教阿不", go: "jh 31;n;se;e;se;s;s;sw;se;se;e;nw;e;ne;n;ne;n;n;n;n;n;n;n;n;n;w;w;event_1_57281457;event_1_10395181;;home;" }, { n: "绝情鳄鱼", go: "jh 37;n;e;e;nw;nw;w;n;e;n;e;e;e;ne;ne;ne;se;n;event_1_97487911;home;" }, { n: "少林渡劫", go: "jh 13;e;s;s;w;w;w;;event_1_38874360;;kill?渡风神识;;home;" }, { n: "天山七侠", fn: PLU.TianShan7Xia }, { n: "明教毒魔", go: "jh 18;n;nw;n;n;n;n;n;ne;n;n;n;n;n;n;n;n;n;w;nw;nw;event_1_70957287;;kill?九幽毒魔;;home;" }, //{ n: "侠客看书", go: "jh 36;yell;e;ne;ne;ne;e;e;e;event_1_9179222;e;event_1_11720543;home;" }, //{ n: "白驼闯阵", go: "jh 21;n;n;n;n;w;;ak;w;;w;ka;w;;fight baituo_junzhongzhushuai;home;" }, //{ n: "青城孽龙", go: "jh 15;n;nw;w;nw;n;event_1_14401179;;kill?孽龙之灵;home;" }, //{ n: "峨眉解围", go: "jh 8;ne;e;e;e;n;;kill?赤豹死士;n;n;;kill?黑鹰死士;n;n;;kill?金狼大将;home;" }, //{ n: "大昭岩画", go: "jh 26;w;w;n;w;w;w;n;n;place?阴山岩画;event_1_12853448;home;" }, //{ n: "恒山盗贼", go: "jh 9;event_1_20960851;;kill?杀神寨匪首;home;" }, //{n: "白驮奇袭",go: "jh 21;n;n;n;n;e;e;e;e;e;e;e;s;s;event_1_66710076;s;e;ne;e;se;n;event_1_53430818;n;;kill?豹军主帅;s;s;nw;n;n;;kill?虎军主帅;s;s;se;e;e;e;;kill?鹰军主帅;w;w;w;nw;w;nw;event_1_89411813;;kill?颉利;home;"}, //{ n: "十八木人", go: "jh 41;se;e;e;se;se;se;se;se;se;event_1_57976870;n;n;n;event_1_91914705;e;e;e;e;#2 vent_1_85950082;home;" }, //{ n: "西安采莲", go: "jh 2;#19 n;e;n;n;n;w;event_1_31320275;home;" }, { n: "论剑试剑", fn: PLU.autoSwords }, { n: "唐门冰月", fn: PLU.autoBingyue }, { n: "垂钓一夏", go: "jh 5;n;w;event_1_3144437;home;" }, { n: "华山祭酒", go: "jh 4;n;n;n;n;n;n;n;n;n;e;n;n;n;n;n;event_1_355715;event_1_355715;;" }, { n: "领取矿镐", fn: PLU.DailyOres },{ n: "清明礼包", go: "jh 1;#4 w;n;event_1_85364899;home;" }, { n: "龙辰礼包", go: "items get_store /obj/quest/jinyuhufusuipian;=200;jh 1;e;#3 n;n;w;event_1_90287255 go go_lsyj;#6 event_1_56364978;#6 event_1_49251725;home;" },{ n: "自动答题", fn: PLU.loopAnswerQues }, { n: "", go: "home;" }]; }, //================================================================================================ initrichangrenwu: function initrichangrenwu() { var _this = this; this.getVipInfo(function (b) { _this.getClanInfo(function (a) { }); }); this.rcrenwu = [ //{ n: "副本十一", fn: PLU.killFB11 }, { n: "副本十一", go: "fb 11;ak;nw;=400;se;n;=400;s;ne;=400;sw;e;=400;w;se;=400;nw;s;=400;n;sw;=400;ne;w;=400;w;=400;e;e;nw;nw;=400;se;se;n;n;=400;s;s;ne;ne;=400;sw;sw;e;e;=400;w;w;se;se;=400;nw;nw;s;s;=400;n;n;sw;sw;=4000;ka;vs:event_1_68529291;" }, { n: "幽冥后院", go: "jh 45;ne;ne;n;n;ne;ne;e;ne;#5 n;ne;ne;#3 n;nw;nw;n;#5 e;event_1_77775145 ymsz_houyuan;se;ak;=400;se;=400;s;=400;w;=400;e;e;=400;w;s;=400;s;=400;s;=400;w;=400;e;e;=400;s;=400;n;e;=400;e;=400;n;=400;s;e;=400;e;=400;n;=500;ka;" }, { n: "西凉铁剑", go: "jh 47;ne;n;n;n;ne;ne;e;e;e;e;ne;n;ne;n;n;n;n;n;nw;nw;ne;n;ne;n;vs:event_1_10117215;" }, { n: "四大绝杀", go: "jh 44;n;n;n;n;e;ne;ne;ne;n;n;n;n;n;nw;nw;nw;w;n;n;n;n;e;n;n;n;n;n;w;w;n;n;n;n;n;n;n;n;vs:event_1_33144912;" }, { n: "剑宫白猿", go: "rank go 204;e;s;s;s;s;s;s;s;s;w;w;n;n;n;n;nw;nw;nw;n;n;n;vs:event_1_79113775;" }, { n: "十八木人", go: "jh 41;se;e;e;se;se;se;se;se;se;event_1_57976870;n;n;n;event_1_91914705;e;e;e;vs:event_1_85950082;" }, { n: "阎王十殿", go: "rank go 223;nw;event_1_42827171;=200;kill yanwangshidian_zhuanlunwang;ak;;ka;;vs:event_1_45876452;=3500;vs:event_1_45876452;" }, { n: "格斗五十", fn: PLU.gedou50 }, { n: "生死双修", fn: PLU.piapiapia }, { n: "讨天命丹", fn: PLU.askTianmd }, { n: "天龙塔林", fn: PLU.killtalin }, { n: "拱辰十三", go: "jh 1;e;#4 n;w;event_1_90287255 go 9;n;#3 w;n;event_1_63249896;=500;ak;=500;ka;=500;event_1_23639130;=500;golook_room" }, { n: "南诏宝斋", fn: PLU.rongbaoz }, { n: "南诏奏乐", fn: PLU.nanzzouy }, { n: "南诏问诊", fn: PLU.nanzwenz }, { n: "修补长城", go: "rank go 311;s;s;sw;se;se;se;e;se;se;sw;sw;=500;event_1_71928780;" }, { n: "西夏灵鹫", go: "rank go 311;event_1_57364318;=500;ak;;ka;=500;event_1_86741439;" }, { n: "西夏哈日", fn: PLU.goHaRi }, { n: "西夏九翼", go: "rank go 311;s;s;sw;log?自己换装备打吧;" }, { n: "", go: "home;" }, ]; }, //================================================================================================ TianShan7Xia: function TianShan7Xia(callback) { PLU.execActions("jh 39;ne;e;n;ne;ne;n;ne;nw;ne;nw;event_1_17801939;place?星星峡;ne;ne;nw;nw", function () { PLU.autoFight({ targetKey: "\nevent_1_37376258", // 懒的改函数了,直接注入( fightKind: " ", onFail: function onFail() { PLU.execActions("home;", function () { callback && callback(); }); }, onEnd: function onEnd() { PLU.execActions("home;", function () { callback && callback(); }); } }); }); }, //================================================================================================ answerQues($btn){ let btnFlag = PLU.setBtnRed($btn) if(!btnFlag) { PLU.STO.ansTo && clearTimeout(PLU.STO.ansTo); return UTIL.delSysListener("onAnswerQuestions") } YFUI.showPop({ title:"答题", text:"是否开始答题?", onOk(){ PLU.loopAnswerQues($btn) }, onNo(){ PLU.setBtnRed($btn,0) } }) }, //================================================================================================ loopAnswerQues($btn){ let setAnswerTimeout=function(){ PLU.STO.ansTo && clearTimeout(PLU.STO.ansTo); PLU.STO.ansTo = setTimeout(()=>{ UTIL.delSysListener("onAnswerQuestions") PLU.setBtnRed($btn,0) YFUI.writeToOut("<span style='color:#FFF;'>--答案超时!--</span>") return },5000) }; UTIL.addSysListener("onAnswerQuestions", function(b, type, subtype, msg) { if (type == "notice" && msg.indexOf("每日武林知识问答次数已经达到限额")>-1) { UTIL.delSysListener("onAnswerQuestions") PLU.STO.ansTo && clearTimeout(PLU.STO.ansTo); PLU.setBtnRed($btn,0) YFUI.showPop({ title:"答题结束", text:"是否回首页?", autoOk:10, onOk(){ clickButton("home") }, onNo(){} }) return; } if (type != "show_html_page") return; var qs = msg.split("\n"); if (!qs) return; if (qs[0].indexOf("知识问答第") < 0) return; setAnswerTimeout() var qus = ""; for (var i = 1; i < qs.length; i++) { qus = $.trim(UTIL.filterMsg(qs[i])); if (qus.length > 0) break; } if (qus.indexOf("回答正确")>=0) { clickButton('question') return; } var answer = PLU.getAnswer2Question(qus); if (answer == null){ UTIL.delSysListener("onAnswerQuestions") PLU.STO.ansTo && clearTimeout(PLU.STO.ansTo); PLU.setBtnRed($btn,0) YFUI.writeToOut("<span style='color:#FFF;'>--未找到答案:"+qus+"--</span>") return } setTimeout(()=>{ clickButton("question " + answer); },300) }) setAnswerTimeout() clickButton('question') }, //================================================================================================ getAnswer2Question(localQuestion) { var answer = YFD.QuestAnsLibs[localQuestion] if (answer) return answer; var halfQuestion = localQuestion.substring(localQuestion.length / 2) for (var quest in YFD.QuestAnsLibs) { if (quest.indexOf(halfQuestion) == 0) { return YFD.QuestAnsLibs[quest]; } } return null; }, /* loopAnswerQues: function (_loopAnswerQues) { function loopAnswerQues(_x) { return _loopAnswerQues.apply(this, arguments); } loopAnswerQues.toString = function () { return _loopAnswerQues.toString(); }; return loopAnswerQues; }(function (callback) { var setAnswerTimeout = function setAnswerTimeout() { PLU.STO.ansTo && clearTimeout(PLU.STO.ansTo); PLU.STO.ansTo = setTimeout(function () { UTIL.delSysListener("onAnswerQuestions"); YFUI.writeToOut("<span style='color:#FFF;'>--答案超时!--</span>"); }, 5000); }; UTIL.addSysListener("onAnswerQuestions", function (b, type, subtype, msg) { if (type == "notice" && msg.indexOf("每日武林知识问答次数已经达到限额") > -1) { if (callback) callback(); else clickButton("home"); UTIL.delSysListener("onAnswerQuestions"); PLU.STO.ansTo && clearTimeout(PLU.STO.ansTo); return; } if (type != "show_html_page") return; var qs = msg.split("\n"); if (!qs) return; if (qs[0].indexOf("知识问答第") < 0) return; setAnswerTimeout(); var qus = ""; for (var i = 1; i < qs.length; i++) { qus = $.trim(UTIL.filterMsg(qs[i])); if (qus.length > 0) break; } if (qus.indexOf("回答正确") >= 0) { clickButton("question"); return; } var answer = PLU.getAnswer2Question(qus); if (answer == null) { UTIL.delSysListener("onAnswerQuestions"); PLU.STO.ansTo && clearTimeout(PLU.STO.ansTo); PLU.setBtnRed($btn, 0); YFUI.writeToOut("<span style='color:#FFF;'>--未找到答案:" + qus + "--</span>"); return; } setTimeout(function () { clickButton("question " + answer); }, 300); }); PUL.loopAnswerQues; setAnswerTimeout(); clickButton("question"); }), //================================================================================================ getAnswer2Question: function getAnswer2Question(localQuestion) { var answer = PLU.YFD.QuestAnsLibs[localQuestion]; if (answer) return answer; var halfQuestion = localQuestion.substring(localQuestion.length / 2); for (var quest in PLU.YFD.QuestAnsLibs) { if (quest.indexOf(halfQuestion) == 0) { return PLU.YFD.QuestAnsLibs[quest]; } } return null; }, */ //================================================================================================ autoBingyue: function autoBingyue(callback) { PLU.execActions("jh 14;w;n;n;n;n;event_1_32682066;;;", function () { setTimeout(function () { PLU.killBingYue(function () { if (callback) callback(); else clickButton("home"); }); }); }); }, //================================================================================================ killBingYue: function killBingYue(endCallback) { if (parseInt(PLU.getCache("autoPerform")) < 1) { PLU.toggleAutoPerform($("#btn_bt_kg_autoPerform"), "autoPerform", 1); } var tryKill = function tryKill(kname, cb, er) { PLU.autoFight({ targetName: kname, fightKind: "kill", onFail: function onFail() { er && er(); }, onEnd: function onEnd() { cb && cb(); } }); }; PLU.execActions("event_1_48044005;;;;", function () { tryKill("冰麟兽", function () { PLU.execActions("event_1_95129086;;;;", function () { tryKill("玄武机关兽", function () { PLU.execActions("event_1_17623983;event_1_41741346;;;;", function () { tryKill("九幽魔灵", function () { PLU.execActions("s;;;;", function () { tryKill("冰月仙人", function () { endCallback && endCallback(); }, function () { endCallback && endCallback(); }); }); }, function () { endCallback && endCallback(); }); }); }, function () { endCallback && endCallback(); }); }); }, function () { endCallback && endCallback(); }); }); }, //================================================================================================ autoXTL1: function autoXTL1() { clickButton("team create"); PLU.killLHYD(function (err) { return YFUI.writeToOut("<span style='color:#FFF;'>--结束--" + err + "</span>"); }); }, autoXTL2: function autoXTL2() { clickButton("team create"); PLU.killSY(function (err) { return YFUI.writeToOut("<span style='color:#FFF;'>--结束--" + err + "</span>"); }); }, autoFB11: function autoFB11() { //clickButton("team create"); YFUI.showPop({ title: "副本11", text: "请自行组队,准备好可以开始", onOk: function onOk(val) { PLU.killFB11(function (err) { return YFUI.writeToOut("<span style='color:#FFF;'>--结束--" + err + "</span>"); }); }, onNo: function onNo() { } }); }, autoFB10: function autoFB10() { clickButton("team create"); PLU.killFB10(function (err) { return YFUI.writeToOut("<span style='color:#FFF;'>--结束--" + err + "</span>"); }); }, autoyoumhy: function autoyoumhy() { clickButton("team create"); PLU.killyoumhy(function (err) { return YFUI.writeToOut("<span style='color:#FFF;'>--结束--" + err + "</span>"); }); }, autoERG: function autoERG() { PLU.killERG(function (err) { return YFUI.writeToOut("<span style='color:#FFF;'>--结束--" + err + "</span>"); }); }, //================================================================================================ scanPuzzle: function scanPuzzle() { PLU.TMP.autoscan = true; PLU.TMP.autotask = true; UTIL.addSysListener("reload", function (b, type, subtype, msg) { if (type == "notice" && subtype == "notify_fail" && msg == "你的背包里没有这个物品。\n") location.reload(); }); if (!PLU.TMP.index) PLU.TMP.index = 0; PLU.TMP.func = function () { PLU.execActions(PLU.linkPath(PLU.queryRoomPath(), PLU.YFD.mapsLib.Npc_New[PLU.TMP.index].way), function () { PLU.execActions(";;ask " + PLU.YFD.mapsLib.Npc_New[PLU.TMP.index].id, function () { PLU.TMP.puzzleTimeOut = setTimeout(function () { if (!PLU.TMP.puzzleWating.status) { PLU.TMP.index++; PLU.TMP.func(); } }, PLU.getCache("puzzleTimeOut") * 1000); }); }); }; PLU.TMP.func(); }, puzzleKey: function puzzleKey() { YFUI.showInput({ title: "密码设置", text: "此设置跨角色共享<br>指定暴击密码由谁提交(输入角色ID)", value: localStorage.getItem("masterAcc") || PLU.accId, onOk: function onOk(val) { localStorage.setItem("masterAcc", String(val)); }, onNo: function onNo() { } }); }, puzzleTimeOut: function puzzleTimeOut() { YFUI.showInput({ title: "超时设置", text: "一条谜题最多耗时(单位:秒),0为不超时,暂不推荐设置为0", value: PLU.getCache("puzzleTimeOut") || 60, onOk: function onOk(val) { PLU.setCache("puzzleTimeOut", val); }, onNo: function onNo() { } }); }, path4FHMJ: function path4FHMJ(endCallback) { PLU.execActions("jh"); if (g_obj_map.get("msg_jh_list") && g_obj_map.get("msg_jh_list").get("finish43") == 0) { return "jh 1;e;n;n;n;n;w;event_1_90287255 go 6;e;s;sw;se;ne;se;s;"; } else { return "jh 43;sw;sw;sw;s;se;se;se;e;s;sw;se;ne;se;;s;"; } }, //琅嬛玉洞 killLHYD: function killLHYD(endCallback) { PLU.execActions(PLU.path4FHMJ() + ";event_1_52732806", function (f) { if (!f) return endCallback && endCallback(1); PLU.execActions("kill langhuanyudong_qixing;;kill langhuanyudong_benkuangxiao;;sw;;kill murong_tuboguoshi;;;get?吐蕃国师的尸体;;", function (f2) { if (!f2) return endCallback && endCallback(2); PLU.execActions("ne;n;;event_1_96023188;w;event_1_39972900;w;event_1_92817399;w;event_1_91110342;s;event_1_74276536;se;event_1_14726005;se;se;;;", function () { var sd = g_obj_map.get("msg_room").elements.find(function (e) { return e.value.indexOf("扫荡") >= 0; }); if (sd) { var cmd_sd = g_obj_map.get("msg_room").get(sd.key.split("_")[0]); PLU.doSaoDang("langhuanyudong", cmd_sd, function () { PLU.killLHYD(endCallback); }); } else { endCallback && endCallback(5); } }); }); }); }, //山崖 killSY: function killSY(endCallback) { PLU.execActions(PLU.path4FHMJ() + "event_1_64526228", function (f) { if (!f) return endCallback && endCallback(1); PLU.execActions("kill shanya_muzhaoxue;;kill shanya_qiongduwu;;kill shanya_yuanzhenheshang;;;", function (f2) { if (!f2) return endCallback && endCallback(2); PLU.execActions("w;event_1_61179401;n;event_1_93134350;n;event_1_60227051;n;event_1_66986009;;kill mingjiao_mengmianrentoumu;;;;get?蒙面人头目的尸体;;", function () { PLU.execActions("n;event_1_53067175;n;event_1_58530809;w;event_1_86449371;event_1_66983665;;", function () { var sd = g_obj_map.get("msg_room").elements.find(function (e) { return e.value.indexOf("扫荡") >= 0; }); if (sd) { var cmd_sd = g_obj_map.get("msg_room").get(sd.key.split("_")[0]); PLU.doSaoDang("shanya", cmd_sd, function () { PLU.killSY(endCallback); }); } else { endCallback && endCallback(5); } }); }); }); }); }, // 恶人谷 killERG: function killERG(endCallback) { var flag = false; PLU.execActions("rank go 236;", function (f) { if (!f) return endCallback && endCallback(1); PLU.execActions("nw;n;n;n;n;n;n;wait#kill tianlongsi_lidazui;get?李大嘴的尸体;", function (f2) { if (!f2) return endCallback && endCallback(2); PLU.execActions("nw;nw;n;wait#kill tianlongsi_baikaixin;get?白开心的尸体;", function (f3) { if (!f3) return endCallback && endCallback(3); PLU.execActions("home;items use tianlongsi_nanguagu;items use tianlongsi_sanxiangmenmgzhuling;"); }); }); }); }, buyJHYL: function buyJHYL() { UTIL.addSysListener("9HYL", function (b, type, subtype, msg) { if (type != "show_html_page") return; var sp = msg.match(/你有四海商票\[1;32mx(\d+)\[2;37;0m/); if (!sp) return; sp = sp[1]; if (sp < 21750) return YFUI.writeToOut("<span style='color:#FF0;'>--你的商票不足21750--</span>"); else PLU.execActions("reclaim buy 27 go 45;" + // 矢车菊 "reclaim buy 46 go 45;" + // 雪英 "reclaim buy 45 go 45;" + // 忘忧草 "reclaim buy 29 go 15;" + // 凤凰木 "reclaim buy 36 go 5;" + // 洛神花 "reclaim buy 31 go 45;" + // 君影草 "reclaim buy 32 go 45;" + // 仙客来 "reclaim buy 33 go 15;" + // 凌霄花 "reclaim buy 34 go 15;" + ( // 夕雾草 UTIL.inHome() ? "go_lookroom" : "home")); UTIL.delSysListener("9HYL"); }); PLU.execActions("reclaim recl"); }, //============日常任务=================================================================== LZqiangss: function LZqiangss() {//龙族强身术 var xueqsscs=10; YFUI.showInput({ title: "龙族强身术", text: "请输入你要学习的次数,默认是10次=100级", value: 10, onOk: function onOk(val) { xueqsscs = parseInt(val); PLU.execActions("event_1_95170966");//10次 }, onNo: function onNo() { UTIL.delSysListener("LZqiangss"); }, }); if ((xueqsscs && type === "notice" && msg.indexOf("消耗:潜能x5000亿,武林名望值x1000") !== -1)) { setTimeout(function () { //PLU.execActions("event_1_44239995")//1次 PLU.execActions("event_1_95170966");//10次 xueqsscs--; }, 200); } else if (type === "notice" && (msg.indexOf("没有足够的") !== -1 || msg.indexOf("不够") !== -1)) { UTIL.delSysListener("LZqiangss"); setTimeout(function () { UTIL.delSysListener("LZqiangss"); YFUI.writeToOut("<span style='color:yellow;'>=====完成学习龙族强身术=====</span>"); }, 500); } setTimeout(function () { PLU.execActions("items get_store /obj/book/xiaoyunlongtengjiancanye"); //霄云龙腾剑残页 PLU.execActions("items get_store /obj/baoshi/hongbaoshi8"); //天神红宝石 PLU.execActions("items get_store /obj/book/neigongxinfamiji"); //内功心法秘籍 PLU.execActions("items get_store /obj/shop/wulingchangye"); //武林至高绝学残页 PLU.execActions("items get_store /obj/med/jinengtianshu"); //技能天书 PLU.execActions("items get_store /obj/shop/jiuzhuanshendan"); //九转神丹 }, 250); }, tiejian: function tiejian() { //西凉铁剑 PLU.execActions("jh 47;ne;n;n;n;ne;ne;e;e;e;e;ne;n;ne;n;n;n;n;n;nw;nw;ne;n;ne;n;event_1_10117215;;"); }, baiyuan: function baiyuan() { //剑宫白猿 PLU.execActions("rank go 204;e;s;s;s;s;s;s;s;s;w;w;n;n;n;n;nw;nw;nw;n;n;n;event_1_79113775;;"); }, yanwang10: function yanwang10() { //阎王十殿 PLU.execActions("rank go 223;nw;event_1_42827171;ak;;ka;event_1_45876452;;"); }, gedou50: function gedou50(callback) { // 格斗五十 var sjindi = 1; UTIL.addSysListener("gedou50", function (b, type, subtype, msg) { if (type == "notice") { var msgTxt = UTIL.filterMsg(msg); if (msgTxt.match("你抽到了")) { if (msgTxt.match(/此轮游戏结束/)) { PLU.execActions("event_1_36867949 get;event_1_36867949 pay;event_1_36867949 take;"); //拿钱走人再开 } var sjindi = msgTxt.match(/奖池提升至(\d+)金锭/); var sjindiNumber = sjindi[1]; if (sjindiNumber >= 30) { YFUI.writeToOut("<span style='color:#FFF;'>--到达--</span>"); //到达地下格斗场 UTIL.delSysListener("gedou50"); PLU.execActions("event_1_36867949 get;event_1_23520182;event_1_70249808 go 50;=24400;;attrs;", callback); } else { PLU.execActions("=300;event_1_36867949 take;"); //抽牌 } } } }); PLU.execActions("rank go 195;event_1_36867949 pay;event_1_36867949 take;"); }, gongcheng13: function gongcheng13() { //拱辰13 PLU.execActions("jh 1;e;#4 n;w;event_1_90287255 go 9;n;#3 w;n;event_1_63249896;ak;;ka;;event_1_23639130;;"); }, rongbaoz: function rongbaoz(callback) { var _g_obj_map$get3; //荣宝斋 PLU.execActions("golook_room;"); var curName = UTIL.filterMsg(((_g_obj_map$get3 = g_obj_map.get("msg_room")) === null || _g_obj_map$get3 === void 0 ? void 0 : _g_obj_map$get3.get("short")) || ""); if (curName == "拱辰楼十三层") { PLU.execActions("event_1_87723605;=500;s;w;w;#10 s;w;w;n;event_1_27429615;", callback); } else { PLU.execActions("jh 1;e;#4 n;w;event_1_90287255 go 9;n;#5 w;#10 s;w;w;n;event_1_27429615;", callback); } }, nanzzouy: function nanzzouy(callback) { var _g_obj_map$get4; //南诏奏乐 PLU.execActions("golook_room;"); var curName = UTIL.filterMsg(((_g_obj_map$get4 = g_obj_map.get("msg_room")) === null || _g_obj_map$get4 === void 0 ? void 0 : _g_obj_map$get4.get("short")) || ""); if (curName == "容宝斋") { PLU.execActions("s;e;e;n;n;w;n;event_1_41100562;;", callback); } else { PLU.execActions("jh 1;e;#4 n;w;event_1_90287255 go 9;n;#5 w;#8 s;w;n;event_1_41100562;;attrs;", callback); } }, killtalin: function killtalin(callback) { var _g_obj_map$get5; //天龙塔林 PLU.execActions("golook_room;"); var curName = UTIL.filterMsg(((_g_obj_map$get5 = g_obj_map.get("msg_room")) === null || _g_obj_map$get5 === void 0 ? void 0 : _g_obj_map$get5.get("short")) || ""); var cmd = ""; if (curName == "大鹳淜洲") { cmd = "w;sw;s;s;sw;sw;sw;get tianlongsi_putiguo;se;se;se;ne;get tianlongsi_xiaoxianglu;ne;ne;;get tianlongsi_putiguo;nw;nw;nw;"; } else { cmd = "rank go 236;nw;n;n;n;n;n;n;nw;nw;n;n;nw;nw;n;n;nw;ne;event_1_1996692;event_1_10567243;w;sw;s;s;sw;sw;sw;get tianlongsi_putiguo;se;se;se;ne;get tianlongsi_xiaoxianglu;ne;ne;;get tianlongsi_putiguo;nw;nw;nw;"; } PLU.execActions(cmd, function () { PLU.execActions("ak;ka;=1500;home;", callback); YFUI.writeToOut("<span style='color:#FFF;'>--塔林完成--</span>"); callback && callback(); }); }, askTianmd: function askTianmd(callback) { //讨天命丹 var countttmd = 0; PLU.execActions("rank go 236;nw;n;n;n;n;n;n;nw;nw;n;n;nw;nw;n;n;nw;ne;event_1_1996692;event_1_10567243", function () { UTIL.addSysListener("asktmd", function (b, type, subtype, msg) { if (type == "notice" && msg.startsWith("你得到天命丹x1")) { countttmd++; YFUI.writeToOut("<span style='color:yellow;'>=====获得天命丹:" + countttmd + " 次=====</span>"); if (countttmd >= 10) { UTIL.delSysListener("asktmd"); YFUI.writeToOut("<span style='color:yellow;'>=====讨天命丹完成=====</span>"); PLU.execActions("golook_room;", function () { callback && callback(); }); } } else if (type == "main_msg" && msg.indexOf("柴绍") >= 0) { PLU.execActions(";ask tianlongsi_chaishao;"); } }); PLU.execActions("ask tianlongsi_chaishao"); }); }, //============周常任务=================================================================== nanzwenz: function nanzwenz(callback) { var _g_obj_map$get6; // 南诏问诊 PLU.execActions("golook_room;"); var curName = UTIL.filterMsg(((_g_obj_map$get6 = g_obj_map.get("msg_room")) === null || _g_obj_map$get6 === void 0 ? void 0 : _g_obj_map$get6.get("short")) || ""); var addNanzwenzListener = function addNanzwenzListener() { UTIL.addSysListener("nanzwenz", function (b, type, subtype, msg) { if (type === "main_msg") { var msgTxt = UTIL.filterMsg(msg); if (msgTxt.match("问诊完成,获得") || msgTxt.match("你完成了每周的问诊任务")) { UTIL.delSysListener("nanzwenz"); PLU.execActions("log?完成问诊;", callback); } else if (msgTxt.match("你正在诊治中,请耐心对待病人。") || msgTxt.match("于是你拿起医圣的银针")) { PLU.execActions("=2400;event_1_27222525;"); } } }); PLU.execActions("event_1_27222525;"); }; if (curName === "元帅府") { PLU.execActions("s;e;#8 n;w;w;s", addNanzwenzListener); } else { PLU.execActions("jh 1;e;n;n;n;n;w;event_1_90287255 go 9;n;#7 w;s;event_1_12050280;", addNanzwenzListener); } }, piapiapia: function piapiapia(callback) { PLU.execActions("rank go 233;#3 s;e;ne;event_1_66728795", function () { UTIL.addSysListener("waitVS", function(b, type, subtype, msg) { if (type == "vs" && subtype == "vs_info") { UTIL.delSysListener("waitVS"); PLU.autoFight({ targetCommand: "none", onFail: function onFail() { setTimeout(callback, 1000); }, onEnd: function onEnd() { setTimeout(callback, 500); } }); } }) }); }, //======个人==================================================================================== saoxlr: function saoxlr(callback) {//刷小龙人 PLU.execActions("items get_store /obj/shop/meiguihua;items info meigui hua;jh 2;event_1_69287816;ak;"); UTIL.addSysListener("saoxlr", function (b, type, subtype, msg,) { if (type == "items" && subtype == "info" && UTIL.filterMsg(b.get("name")) == "玫瑰花" || type == "notice" && subtype == "notify_fail" && msg.indexOf("你的背包里没有这个物品") == 0) { UTIL.delSysListener("meigui"); var meigui = parseInt(b.get("amount")) || 0; if (meigui < 140) { PLU.execActions("#".concat(Math.ceil((140 - meigui) / 10), " shop buy shop28_N_10")); } } else if ((type === "jh" && subtype === "info")) { PLU.execActions("=1500;kill snow_xiaolongren;"); } else if ((type === "vs" && subtype === "text" && msg.indexOf("\n\x1B[1;33m小龙人\x1B[2;37;0m死了。") !== -1)) { setTimeout(function () { PLU.execActions("=1500;kill snow_xiaolongren;"); }, 400); } else if ((type === "notice" && msg.indexOf("你今天挑战太多了") !== -1)) { UTIL.delSysListener("saoxlr"); PLU.execActions("ka;log?完成小龙人;home;", callback); } }); }, saodsm: function saodsm(callback) {//扫荡VIP师门 PLU.execActions("items get_store /obj/shop/shimenling;items info obj_shimenling;"); UTIL.addSysListener("saodsm", function (b, type, subtype, msg) { if ((type === "items" && subtype === "info" && UTIL.filterMsg(b.get("name")) === "师门令") || (type === "notice" && subtype === "notify_fail" && msg.indexOf("你的仓库里没有这个物品") === 0)) { PLU.execActions("items use obj_shimenling;"); } else if ((type === "notice" && msg.indexOf("使用师门令成功,师门任务次数+") !== -1)) { setTimeout(function () { PLU.execActions("items use obj_shimenling;"); }, 200); } else if ((type === "notice" && subtype === "notify_fail" && msg.indexOf("你目前不能使用师门令") !== -1)) { setTimeout(function () { PLU.execActions("vip finish_family;"); }, 200); } else if ((type === "notice" && msg.indexOf("本源无上心经残页x1") !== -1)) { setTimeout(function () { PLU.execActions("vip finish_family;"); }, 200); } else if ((type === "notice" && subtype === "notify_fail" && msg.indexOf("今日师门任务已做完。") !== -1)) { UTIL.delSysListener("saodsm"); PLU.execActions("log?完成VIP师门;", callback); } }); }, saodbjst: function saodbjst(callback) {//吃石头点暴击 PLU.execActions("event_1_69809751;event_1_88152825;items info obj_mitiling;"); UTIL.addSysListener("saodbjst", function (b, type, subtype, msg) { if ((type === "items" && subtype === "info" && UTIL.filterMsg(b.get("name")) === "谜题令")) { PLU.execActions("items use obj_mitiling;"); } else if ((type === "notice" && msg.indexOf("使用谜题令成功,可使用谜题卡次数+") !== -1)) { setTimeout(function () { PLU.execActions("items use obj_mitiling;"); }, 200); } else if ((type === "notice" && subtype === "notify_fail" && msg.indexOf("你目前不能使用\x1B[1;32m谜题令") !== -1)) { setTimeout(function () { PLU.execActions("vip finish_big_task;"); }, 200); } else if ((type === "main_msg" && msg.indexOf("恭喜你,额外获得") !== -1)) { setTimeout(function () { PLU.execActions("vip buy_task;vip finish_big_task;"); }, 200); } else if ((type === "notice" && msg.indexOf("今日谜题任务已做完。") !== -1)) { UTIL.delSysListener("saodbjst"); PLU.execActions("log?完成VIP暴击扫荡第二次;", callback); } }); }, saodbj: function saodbj(callback) {//扫荡VIP暴击 PLU.execActions("wear obj_zhongzuiduxing;wear obj_qingtianwanshi;wear obj_lankeyimeng;wear obj_shanyecunfu;wear obj_xianzhe-xianglian;wear obj_xianzhe-shouzhuo;wear obj_xianzhe-jiezhi;items get_store /obj/shop/mitiling;items info obj_mitiling;"); UTIL.addSysListener("saodbj", function (b, type, subtype, msg) { if ((type === "items" && subtype === "info" && UTIL.filterMsg(b.get("name")) === "谜题令")) { PLU.execActions("items use obj_mitiling;"); } else if ((type === "notice" && msg.indexOf("使用谜题令成功,可使用谜题卡次数+") !== -1)) { setTimeout(function () { PLU.execActions("items use obj_mitiling;"); }, 200); } else if ((type === "notice" && subtype === "notify_fail" && msg.indexOf("你目前不能使用\x1B[1;32m谜题令") !== -1)) { setTimeout(function () { PLU.execActions("vip finish_big_task;"); }, 200); } else if ((type === "main_msg" && msg.indexOf("恭喜你,额外获得") !== -1)) { setTimeout(function () { PLU.execActions("vip buy_task;vip finish_big_task;"); }, 200); } else if ((type === "notice" && msg.indexOf("今日谜题任务已做完。") !== -1)) { UTIL.delSysListener("saodbj"); PLU.execActions("log?完成VIP暴击扫荡;", callback); } }); }, DailyOres(callback) { PLU.execActions("jh 2;#10 n;#2 w;event_1_85264690;items info obj_tbg;"); UTIL.addSysListener("DailyOres", function (b, type, subtype, msg) { if ((type === "items" && subtype === "info" && UTIL.filterMsg(b.get("name")) === "探宝镐")) { PLU.execActions("#2 w;event_1_37287831;event_1_49475184;home;", callback); } else if (type == "notice" && subtype == "notify_fail" && msg.indexOf("你的背包里没有这个物品") == 0) { PLU.execActions("home;", callback); } }); }, buyzl10: function buyzl11() {//买斩龙套 var ybjifen = g_obj_map.get("msg_attrs") && g_obj_map.get("msg_attrs").get("xf_score"); YFUI.writeToOut("<span style='color:#7FFF00;'>当前消费积分: ".concat(ybjifen || "未知", "</span>")); YFUI.showPop({ title: "买斩龙套", text: "请先确认你有足够的消费积分,购买斩龙套需要49.2W积分,不够请取消。", onOk: function onOk(val) { setTimeout(function () { PLU.execActions("shop xf_buy xf_shop51;shop xf_buy xf_shop52;shop xf_buy xf_shop48;shop xf_buy xf_shop47;shop xf_buy xf_shop46;shop xf_buy xf_shop44;shop xf_buy xf_shop43;moke equip_armor10;moke equip_boots10;moke equip_finger10;moke equip_head10;moke equip_neck10;moke equip_wrists10;moke equip_waist10;"); }, 400); }, onNo: function onNo() { } }); }, dhyt11: function dhyt11() {//兑换胤天套 YFUI.showPop({ title: "兑换胤天", text: "请先确认你有足够的11阶装备碎片,不够请取消,游四海那里直接兑换5000再来。", onOk: function onOk(val) { setTimeout(function () { PLU.execActions("items get_store /obj/quest/hat_suipian11;items get_store /obj/quest/waist_suipian11;items get_store /obj/quest/shield_suipian11;items get_store /obj/quest/blade_suipian11;items get_store /obj/quest/sword_suipian11;items get_store /obj/quest/unarmed_suipian11;items get_store /obj/quest/throwing_suipian11;items get_store /obj/quest/staff_suipian11;items get_store /obj/quest/stick_suipian11;items get_store /obj/quest/whip_suipian11;items get_store /obj/quest/axe_suipian11;items get_store /obj/quest/necklace_suipian11;items get_store /obj/quest/hammer_suipian11;items get_store /obj/quest/spear_suipian11;items get_store /obj/quest/wrists_suipian11;items get_store /obj/quest/finger_suipian11;items get_store /obj/quest/boots_suipian11;items get_store /obj/quest/cloth_suipian11;items get_store /obj/quest/armor_suipian11;items get_store /obj/quest/dagger_suipian11;items get_store /obj/quest/surcoat_suipian11;jh 1;e;n;n;w;#40 event_1_58404606;"+ "jh 3;s;e;n;duihuan_mieshen_go gift1;duihuan_mieshen_go gift10;duihuan_mieshen_go gift2;duihuan_mieshen_go gift3;duihuan_mieshen_go gift4;duihuan_mieshen_go gift5;duihuan_mieshen_go gift7;moke equip_armor11;moke equip_boots11;moke equip_finger11;moke equip_wrists11;moke equip_neck11;moke equip_waist11;moke equip_head11;"); }, 400); }, onNo: function onNo() { } }); }, dhht12: function dhht12() {//兑换皇天套 YFUI.showPop({ title: "换12阶皇天", text: "请先确认你有足够的12阶装备碎片,不够请取消,游四海那里直接兑换5000再来。", onOk: function onOk(val) { setTimeout(function () { PLU.execActions("items get_store /obj/shop/dog_liquan;items get_store /obj/quest/hat_suipian12;items get_store /obj/quest/waist_suipian12;items get_store /obj/quest/shield_suipian12;items get_store /obj/quest/blade_suipian12;items get_store /obj/quest/sword_suipian12;items get_store /obj/quest/unarmed_suipian12;items get_store /obj/quest/throwing_suipian12;items get_store /obj/quest/staff_suipian12;items get_store /obj/quest/stick_suipian12;items get_store /obj/quest/whip_suipian12;items get_store /obj/quest/axe_suipian12;items get_store /obj/quest/necklace_suipian12;items get_store /obj/quest/hammer_suipian12;items get_store /obj/quest/spear_suipian12;items get_store /obj/quest/wrists_suipian12;items get_store /obj/quest/finger_suipian12;items get_store /obj/quest/boots_suipian12;items get_store /obj/quest/cloth_suipian12;items get_store /obj/quest/armor_suipian12;items get_store /obj/quest/dagger_suipian12;items get_store /obj/quest/surcoat_suipian12;"+ "jh 3;s;e;n;duihuan_eq12_go gift1;duihuan_eq12_go gift10;duihuan_eq12_go gift2;duihuan_eq12_go gift3;duihuan_eq12_go gift4;duihuan_eq12_go gift5;duihuan_eq12_go gift7;moke equip_armor12;moke equip_boots12;moke equip_finger12;moke equip_wrists12;moke equip_neck12;moke equip_waist12;moke equip_head12;"); }, 400); }, onNo: function onNo() { } }); }, dhbingy: function dhbingy() {//兑换冰月材料 PLU.execActions("reclaim buy;"); UTIL.addSysListener("dhbingy", function (b, type, subtype, msg) { if (type != "show_html_page") return; var sp = msg.match(/你有四海商票\[1;32mx(\d+)\[2;37;0m/); //YFUI.writeToOut("<span style='color:#7FFF00;'>".concat(sp || "未知", "</span>")); }); YFUI.showPop({ title: "兑换冰月材料", text: "需要762万四海商票,不够请取消,游四海那里兑换点天神再来。<br>\n <span>材料需要:700长生石,1400冰月羽。<br>\n <span>材料足够的请取消,直接打造。", onOk: function onOk(val) { setTimeout(function () { PLU.execActions("reclaim buy 10 700;reclaim buy 11 1400;"); }, 200); }, onNo: function onNo() { } }); }, dzbingy: function dzbingy() {//打造冰月套 YFUI.showPop({ title: "打造冰月", text: "请先确认你有冰月材料,不够请取消,点击兑换冰材再来。", onOk: function onOk(val) { setTimeout(function () { PLU.execActions("wear equip_moke_head12;wear equip_moke_waist12;wear equip_moke_neck12;wear equip_moke_wrists12;wear equip_moke_finger12;wear equip_moke_boots12;wear equip_moke_armor12;jh 33;sw;sw;s;s;s;s;w;w;w;w;w;n;w;se;by_upgrade 1 equip_moke_waist12;by_upgrade 1 equip_moke_wrists12;by_upgrade 1 equip_moke_neck12;by_upgrade 1 equip_moke_head12;by_upgrade 1 equip_moke_armor12;by_upgrade 1 equip_moke_finger12;wear equip_by_neck12;wear equip_by_wrists12;wear equip_by_waist12;jh 14;w;n;n;n;n;#100 by_upgrade 2 equip_by_waist12;#100 by_upgrade 2 equip_by_wrists12;#100 by_upgrade 2 equip_by_neck12;jh 26;w;w;w;w;w;n;#100 by_upgrade 3 equip_by_waist12;#100 by_upgrade 3 equip_by_wrists12;#100 by_upgrade 3 equip_by_neck12;"+ "jh 33;sw;sw;s;s;s;s;w;w;w;w;w;n;w;se;by_upgrade 1 equip_moke_head12;by_upgrade 1 equip_moke_armor12;by_upgrade 1 equip_moke_finger12;by_upgrade 1 equip_moke_boots12;wear equip_by_boots12;wear equip_by_finger12;wear equip_by_armor12;wear equip_by_head12;jh 14;w;n;n;n;n;#100 by_upgrade 2 equip_by_head12;#100 by_upgrade 2 equip_by_armor12;#100 by_upgrade 2 equip_by_finger12;#100 by_upgrade 2 equip_by_boots12;jh 26;w;w;w;w;w;n;#100 by_upgrade 3 equip_by_head12;#100 by_upgrade 3 equip_by_armor12;#100 by_upgrade 3 equip_by_finger12;#100 by_upgrade 3 equip_by_boots12;remove equip_by_boots12;remove equip_by_finger12;remove equip_by_armor12;remove equip_by_head12;remove equip_by_neck12;remove equip_by_waist12;remove equip_by_wrists12;#100 by_upgrade 3 equip_by_surcoat11;#100 by_upgrade 3 equip_by_yupei12;"); }, 200); }, onNo: function onNo() { } }); }, dhjians: function dhjians() {//兑换剑神套 YFUI.showPop({ title: "兑换兑换剑神套", text: "请装备好材料再点确认。", onOk: function onOk(val) { setTimeout(function () { PLU.execActions("jh 2;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;w;w;w;w;n;n;n;n;;n;n;n;items upgrade_13shoushi go 0;items upgrade_13shoushi go 1;items upgrade_13shoushi go 2;items upgrade_13shoushi go 3;items upgrade_13shoushi go 4;items upgrade_13shoushi go 5;items upgrade_13shoushi go 6;home;"+ "#4 imbed obj_jianxinbumie wear huangbaoshi8;#2 imbed obj_jianxinbumie wear lanbaoshi8;imbed obj_jianxinbumie wear lvbaoshi8;"+ "#4 imbed obj_jianyironghen wear hongbaoshi8;#2 imbed obj_jianyironghen wear lanbaoshi8;imbed obj_jianyironghen wear lvbaoshi8;"+ "#4 imbed obj_jiandaozhangcun wear lanbaoshi8;#3 imbed obj_jiandaozhangcun wear lvbaoshi8;"+ "#4 imbed obj_wuyinglou-xianglian wear lanbaoshi8;#3 imbed obj_wuyinglou-xianglian wear lvbaoshi8;"+ "#4 imbed obj_wuyinglou-shouzhuo wear hongbaoshi8;#2 imbed obj_wuyinglou-shouzhuo wear lanbaoshi8;imbed obj_wuyinglou-shouzhuo wear lvbaoshi8;"+ "#4 imbed obj_wuyinglou-jiezhi wear hongbaoshi8;#2 imbed obj_wuyinglou-jiezhi wear lvbaoshi8;imbed obj_wuyinglou-jiezhi wear lanbaoshi8;"+ "#4 imbed obj_wuwozhijian wear lanbaoshi8;#3 imbed obj_wuwozhijian wear lvbaoshi8;"+ "wear obj_jianyironghen;wear obj_wuyinglou-jiezhi;wear obj_jianxinbumie;wear obj_jiandaozhangcun;wear obj_wuyinglou-xianglian;wear obj_wuwozhijian;wear obj_wuyinglou-shouzhuo;"); }, 200); }, onNo: function onNo() { } }); }, dhchuid: function dhchuid() {//兑换垂钓套 YFUI.showPop({ title: "兑换垂钓套", text: "请装备好材料再点确认。", onOk: function onOk(val) { setTimeout(function () { PLU.execActions("jh 2;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;w;w;w;w;n;n;n;n;;n;n;n;items upgrade_13shoushi go 7;items upgrade_13shoushi go 8;items upgrade_13shoushi go 9;items upgrade_13shoushi go 10;items upgrade_13shoushi go 11;items upgrade_13shoushi go 12;items upgrade_13shoushi go 13;home;"+ "log?没得装备没写完,只能兑换,后面自己打宝石穿装备;"); }, 200); }, onNo: function onNo() { } }); }, dhzxianz: function dhzxianz() {//兑换贤者套 YFUI.showPop({ title: "兑换贤者套", text: "请装备好材料再点确认。", onOk: function onOk(val) { setTimeout(function () { PLU.execActions("jh 2;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;n;w;w;w;w;n;n;n;n;;n;n;n;items upgrade_13shoushi go 14;items upgrade_13shoushi go 15;items upgrade_13shoushi go 16;items upgrade_13shoushi go 17;items upgrade_13shoushi go 18;items upgrade_13shoushi go 19;items upgrade_13shoushi go 20;home;"+ "#4 imbed obj_zhongzuiduxing wear hongbaoshi8;#2 imbed obj_zhongzuiduxing wear lanbaoshi8;imbed obj_zhongzuiduxing wear lvbaoshi8;"+ "#4 imbed obj_qingtianwanshi wear lanbaoshi8;#3 imbed obj_qingtianwanshi wear lvbaoshi8;"+ "#4 imbed obj_lankeyimeng wear huangbaoshi8;#2 imbed obj_lankeyimeng wear lanbaoshi8;imbed obj_lankeyimeng wear lvbaoshi8;"+ "#4 imbed obj_shanyecunfu wear lanbaoshi8;#3 imbed obj_shanyecunfu wear lvbaoshi8;"+ "#4 imbed obj_xianzhe-xianglian wear lanbaoshi8;#3 imbed obj_xianzhe-xianglian wear lvbaoshi8;"+ "#4 imbed obj_xianzhe-shouzhuo wear hongbaoshi8;#2 imbed obj_xianzhe-shouzhuo wear lanbaoshi8;imbed obj_xianzhe-shouzhuo wear lvbaoshi8;"+ "#4 imbed obj_xianzhe-jiezhi wear hongbaoshi8;#2 imbed obj_xianzhe-jiezhi wear lvbaoshi8;imbed obj_xianzhe-jiezhi wear lanbaoshi8;"+ "wear obj_zhongzuiduxing;wear obj_qingtianwanshi;wear obj_lankeyimeng;wear obj_shanyecunfu;wear obj_xianzhe-xianglian;wear obj_xianzhe-shouzhuo;wear obj_xianzhe-jiezhi;" ); }, 200); }, onNo: function onNo() { } }); }, ningjlp: function ningjlp() {//凝聚力魄 PLU.execActions("jh 1;event_1_87882130 go 0;event_1_87882130 go 1;event_1_87882130 go 2;event_1_87882130 go 3;event_1_87882130 go 4;event_1_87882130 go 5;event_1_87882130 go 6;event_1_87882130 go 7;event_1_87882130 go 8;event_1_87882130 go 9;event_1_87882130 go 10;event_1_87882130 go 11;event_1_87882130 go 12;"); }, xuetyz: function xuetyz() {//雪亭驿 PLU.execActions("jh 1;e;#3 n;n;w;"); }, Longsyj: function Longsyj() {//龙神遗迹 PLU.execActions("jh 1;e;#3 n;n;w;event_1_90287255 go go_lsyj;"); }, choujiang: function choujiang() {//抽奖 var countProte = 0; // 统计神秘渔护的数量 var countTalisman = 0; // 统计龙神试炼锦囊的数量 var countLSDBag = 0; // 统计龙神试炼福袋的数量 var countcj=100; UTIL.addSysListener("choujjuan", function (b, type, subtype, msg) { if ((type === "items" && subtype === "info" && UTIL.filterMsg(b.get("name")) === "抽奖券") || (type === "notice" && subtype === "notify_fail" && msg.indexOf("你的背包里没有这个物品") === 0)) { var choujjuan = parseInt(b.get("amount")) || 0; YFUI.writeToOut("<span style='color:#FFFF55;'>当前抽奖卷数量: " + choujjuan + "</span>"); if (!choujjuan) { UTIL.delSysListener("choujjuan"); return; } YFUI.showInput({ title: "抽奖", text: "请确保抽奖卷足够,默认为100=1000次抽奖", value: 100, onOk: function onOk(valcj) { countcj = parseInt(valcj) PLU.execActions("jh 1;go_choujiang 10"); }, onNo: function onNo() { UTIL.delSysListener("choujjuan"); }, }); } else if ((countcj && type === "notice" && msg.indexOf("抽奖10次额外获得") !== -1)) { setTimeout(function () { PLU.execActions("go_choujiang 10") countcj--; }, 200); } else if (type === "notice" && ((msg.indexOf("没有足够的抽奖卷") !== -1) ||(msg.indexOf("剩余抽奖次数不够") !== -1) || msg.indexOf("抽奖次数已经用完") !== -1)) { UTIL.delSysListener("choujjuan"); setTimeout(function () { UTIL.delSysListener("choujjuan"); PLU.execActions("home;=300;"); YFUI.writeToOut("<span style='color:yellow;'>=====完成抽奖=====</span>"); YFUI.writeToOut("<span style='color:#FF0000;'>获得神秘渔护: " + countProte + "</span>"); YFUI.writeToOut("<span style='color:#FF0000;'>获得龙神试炼锦囊: " + countTalisman + "</span>"); YFUI.writeToOut("<span style='color:#FF0000;'>获得龙神试炼福袋: " + countLSDBag + "</span>"); }, 500); } // 监听抽奖获得物品的消息 else if (type === "notice" && msg.indexOf("抽奖") !== -1) { var regexMyProte = /神秘[\s\S]*?渔[\s\S]*?护[\s\S]*?x(\d+)/; var regexTalisman = /龙[\s\S]*?神[\s\S]*?试炼[\s\S]*?锦囊[\s\S]*?x(\d+)/; var regexLSDBag = /龙[\s\S]*?神[\s\S]*?试炼[\s\S]*?福袋[\s\S]*?x(\d+)/; if (regexMyProte.test(msg)) { var quantity = parseInt(regexMyProte.exec(msg)[1]) || 1; countProte += quantity; } if (regexTalisman.test(msg)) { var quantity = parseInt(regexTalisman.exec(msg)[1]) || 1; countTalisman += quantity; } if (regexLSDBag.test(msg)) { var quantity = parseInt(regexLSDBag.exec(msg)[1]) || 1; countLSDBag += quantity; } } else if (!countcj) { UTIL.delSysListener("choujjuan"); setTimeout(function () { UTIL.delSysListener("choujjuan"); PLU.execActions("hoem;=300;"); YFUI.writeToOut("<span style='color:yellow;'>=====完成抽奖=====</span>"); YFUI.writeToOut("<span style='color:#FF0000;'>获得神秘渔护: " + countProte + "</span>"); YFUI.writeToOut("<span style='color:#FF0000;'>获得龙神试炼锦囊: " + countTalisman + "</span>"); YFUI.writeToOut("<span style='color:#FF0000;'>获得龙神试炼福袋: " + countLSDBag + "</span>"); }, 500); } }); setTimeout(function () { PLU.execActions("items get_store /obj/shop/choujiangquan;items info obj_choujiangquan;"); }, 250); }, givehuf: function givehuf() { //交虎符 PLU.execActions("jh 1;e;#3 n;n;w;event_1_90287255 go go_lsyj;=200;items get_store /obj/quest/jinyuhufusuipian;#6 event_1_56364978;#6 event_1_49251725;"); }, huanpf: function huanpf() { //换皮肤 YFUI.showInput({ title: "换皮肤", text: '请输入你要选的皮肤,<br>\n <span>1:极简之风<br>\n <span style="color:#578DC9;">2:碧海奇侠<br>\n <span style="color:#8F7D5C;">3:大漠飞鹰<br>\n ', value: "1", // 默认值为1 onOk: function onOk(val) { PLU.execActions("skin_select ".concat(val)); // 使用输入的值换皮肤 }, onNo: function onNo() { } }); }, zbjianshen: function zbjianshen() { //剑神套 PLU.execActions("wear obj_jianxinbumie;wear obj_jianyironghen;wear obj_jiandaozhangcun;wear obj_wuyinglou-xianglian;wear obj_wuyinglou-shouzhuo;wear obj_wuyinglou-jiezhi;wear obj_wuwozhijian;log?剑神套穿戴完毕!;"); }, zbchuidiao: function zbchuidiao() { //垂钓套 PLU.execActions("wear obj_fushenbanxian;wear obj_yinqingruanque;wear obj_chuidiaozhe-shouzhuo;wear obj_chuidiaozhe-xianglian;wear obj_chuidiaozhe-jiezhi;wear obj_hanjianguyin;wear obj_zhouyebufen;log?垂钓套穿戴完毕!;"); }, zbxianzhe: function zbxianzhe() { //贤者套 PLU.execActions("wear obj_zhongzuiduxing;wear obj_qingtianwanshi;wear obj_lankeyimeng;wear obj_shanyecunfu;wear obj_xianzhe-xianglian;wear obj_xianzhe-shouzhuo;wear obj_xianzhe-jiezhi;log?贤者套穿戴完毕!;"); }, caomeibs: function caomeibs() { //草莓冰沙 PLU.execActions("items use obj_caomeibingsha"); }, eatbuping: function eatbuping() { //吃补品 PLU.execActions("items use tianlongsi_nanguagu;items use tianlongsi_sanxiangmenmgzhuling;items use obj_molitang;items use obj_yuanxiao;items use obj_jiuhuayulouwan;items use obj_qiaoguoer;items use obj_lanlingmeijiu;items use obj_bingtanghulu;"); }, Qubaos: function Qubaos() { PLU.execActions("items get_store /obj/baoshi/lvbaoshi2;" + //绿宝石裂开 "items get_store /obj/baoshi/lvbaoshi3;" + //绿宝石 "items get_store /obj/baoshi/lvbaoshi4;" + //绿宝石无暇 "items get_store /obj/baoshi/lvbaoshi5;" + //绿宝石完美 "items get_store /obj/baoshi/lvbaoshi6;" + //绿宝石君王 "items get_store /obj/baoshi/lvbaoshi7;" + //绿宝石皇帝 "items get_store /obj/baoshi/hongbaoshi2;" + //红宝石裂开 "items get_store /obj/baoshi/hongbaoshi3;" + //红宝石 "items get_store /obj/baoshi/hongbaoshi4;" + //红宝石无暇 "items get_store /obj/baoshi/hongbaoshi5;" + //红宝石完美 "items get_store /obj/baoshi/hongbaoshi6;" + //红宝石君王 "items get_store /obj/baoshi/hongbaoshi7;" + //红宝石皇帝 "items get_store /obj/baoshi/lanbaoshi2;" + //蓝宝石裂开 "items get_store /obj/baoshi/lanbaoshi3;" + //蓝宝石 "items get_store /obj/baoshi/lanbaoshi4;" + //蓝宝石无暇 "items get_store /obj/baoshi/lanbaoshi5;" + //蓝宝石完美 "items get_store /obj/baoshi/lanbaoshi6;" + //蓝宝石君王 "items get_store /obj/baoshi/lanbaoshi7;" + //蓝宝石皇帝 "items get_store /obj/baoshi/huangbaoshi2;" + //黄宝石裂开 "items get_store /obj/baoshi/huangbaoshi3;" + //黄宝石 "items get_store /obj/baoshi/huangbaoshi4;" + //黄宝石无暇 "items get_store /obj/baoshi/huangbaoshi5;" + //黄宝石完美 "items get_store /obj/baoshi/huangbaoshi6;" + //黄宝石君王 "items get_store /obj/baoshi/huangbaoshi7;" + //黄宝石皇帝 "items get_store /obj/baoshi/zishuijing2;" + //紫宝石裂开 "items get_store /obj/baoshi/zishuijing3;" + //紫宝石 "items get_store /obj/baoshi/zishuijing4;" + //紫宝石无暇 "items get_store /obj/baoshi/zishuijing5;" + //紫宝石完美 "items get_store /obj/baoshi/zishuijing6;" + //紫宝石君王 "items get_store /obj/baoshi/zishuijing7;" //紫宝石皇帝 ); }, Quyijiy: function Quyijiy() {//取一级玉 PLU.execActions("items get_store /obj/yushi/dixisui1;" + "items get_store /obj/yushi/donghaibi1;" + "items get_store /obj/yushi/jiutianluo1;" + "items get_store /obj/yushi/juzimo1;" + "items get_store /obj/yushi/kunlunyin1;" + "items get_store /obj/yushi/longtingpo1;" + "items get_store /obj/yushi/xuanyuanlie1;" ); }, QuTianss: function QuTianss() { PLU.execActions("items get_store /obj/baoshi/lvbaoshi8;" +//绿宝石天神 "items get_store /obj/baoshi/hongbaoshi8;" +//红宝石天神 "items get_store /obj/baoshi/lanbaoshi8;" +//蓝宝石天神 "items get_store /obj/baoshi/huangbaoshi8;" +//黄宝石天神 "items get_store /obj/baoshi/zishuijing8;" //紫宝石天神 ); }, buyXueLian: function buyXueLian() { PLU.execActions("jh 1;e;n;n;n;w;" + "#10 buy /map/snow/npc/obj/ice_lotus_N_10 from snow_herbalist;" +//购买100雪莲 "home;"); }, LLBao: function LLBao() { PLU.execActions("jh 2;#7 n;lq_chunhui_lb;lq_fuai_lb;" +//礼包:春晖 父爱 "jh 1;sd_2024_lb;sd_2024_ch;" +//礼包:元旦 "home;"); }, eatHuoG: function eatHuoG() { PLU.execActions("items use obj_bingjilinghuoguo1;" //吃火锅 ); }, QuLiCai: function QuLiCai() { PLU.execActions("items get_store /obj/shop/jiuzhuanshendan;" + //九转神丹 "items get_store /obj/baoshi/huangbaoshi8;" //黄宝石天神 ); }, DianLiCai: function DianLiCai() { PLU.execActions("event_1_62143505 go;" + //超级投资 "event_1_62143505 get;event_1_63750325 get;" //领收益 ); }, autoChuangLou: function autoChuangLou(endcallback) { UTIL.addSysListener("sword", function (b, type, subtype, msg) { if (msg.includes("战斗结束") || msg.includes("戰鬥結束")) { // PLU.execActions("prev_combat;cangjian kill");//执行prev_combat和cangjian kill命令,挑战剑楼 } }); //PLU.execActions("prev_combat"); // 执行prev_combat命令 }, asJirudw: function asJirudw() { YFUI.showInput({ title: "队伍加入", text: "请输入你要加入队伍的角色ID: 比如:3070884(1) 4512928(1)", value: PLU.getCache("defaultValue") || "3070884(1)", onOk: function onOk(val) { PLU.setCache("defaultValue", val); PLU.execActions("team join u".concat(val)); // 加入队伍 }, onNo: function onNo() { } }); }, asJirudwdm: function asJirudwdm() { PLU.execActions("team join u3070884(1);prev;" // 加入队伍 ); }, eatSans: function eatSans() { //使用三生石 PLU.execActions("items get_store /obj/shop/sanshengshi;event_1_66830905;"); }, Longsjs: function Longsjs() { //龙神祭祀 PLU.execActions("jh 5;#6 n;w;event_1_69751810;event_1_43899943;event_1_43899943 go 6;home;"); }, Yandijd: function Yandijd() { //炎帝祭典 PLU.execActions("jh 5;#6 n;w;event_1_69751810;event_1_43899943;event_1_43899943 go 5;home;"); }, //全杀了 allkill: function allkill(params) { var npcs = UTIL.getRoomAllNpc().filter(function (e) { return !(["金甲符兵", "玄阴符兵", "玄陰符兵"].indexOf(e.name) >= 0); }); //let npcs = UTIL.getRoomAllNpc().filter(e=>!(UTIL.filterMsg(e.name).match(/(金甲|玄阴)符兵/))) //let npcs = UTIL.getRoomAllNpc() if (npcs.length) { PLU.autoFight({ targetKey: npcs[0].key, onEnd: function onEnd() { setTimeout(function () { PLU.allkill(params); }, 500); } }); } else { params.idx++; if (params.paths[params.idx] != "ka") { params.paths.splice(params.idx + 1, 0, "ak"); } else { params.idx++; } setTimeout(function () { //PLU.allkill(params); PLU.actions(params); }, 400); } }, //================================================================================================ execActions: function execActions(str, endcallback, params) { var acs = str.split(";"); acs = acs.map(function (e) { var np = e.match(/^#(\d+)\s(.*)/); if (np) { var r = []; for (var i = 0; i < np[1]; i++) r.push(np[2]); return r; } return e; }).flat(); acs = acs.map(function (e) { if (PLU.YFD.pathCmds[e]) return PLU.YFD.pathCmds[e] + "." + UTIL.rnd(); return e; }); PLU.actions({ paths: acs, idx: 0, onPathsEnd: function onPathsEnd() { PLU.STATUS.isBusy = false; endcallback && endcallback(true, params); }, onPathsFail: function onPathsFail() { PLU.STATUS.isBusy = false; endcallback && endcallback(false, params); } }); }, //================================================================================================ actions: function actions(params) { PLU.STATUS.isBusy = true; //params:{paths,idx,onPathsEnd,onPathsFail} if (params.idx >= params.paths.length) { return params.onPathsEnd && params.onPathsEnd(); } var curAct = params.paths[params.idx]; // 等 if (!curAct || curAct.startsWith("=")) { setTimeout(function () { params.idx++; PLU.actions(params); }, parseInt(curAct.substring(1)) || 250); return; } // 优先处理移动 if (curAct.startsWith("go")) { clickButton(curAct); setTimeout(function () { params.idx++; PLU.actions(params); }, 500); return; } // 书面通知 if (curAct.indexOf("log?") > -1) { YFUI.writeToOut("<span style='color:yellow;'>==" + curAct.substring(4) + "==</span>"); params.idx++; PLU.actions(params); return; } //等待复活 if (curAct.indexOf("wait#") > -1 || curAct.indexOf("wait ") > -1) { var _npc = curAct.substring(curAct.indexOf(" ") + curAct.indexOf("?") + 2); if (UTIL.getRoomAllNpc().some(function (e) { return e.name == _npc || e.key == _npc; })) { if (params.paths[params.idx].indexOf("wait ") > -1) params.idx++; else params.paths[params.idx] = params.paths[params.idx].substring(5); PLU.actions(params); } else UTIL.addSysListener("wait", function (b, type, subtype, msg) { if (UTIL.inHome()) { UTIL.delSysListener("wait"); params.idx = params.paths.length; PLU.actions(params); } if (type != "jh") return; if (subtype == "info") { UTIL.delSysListener("wait"); params.idx = params.paths.length; PLU.actions(params); } if (subtype != "new_npc") return; if (b.get("id") == _npc || b.get("name") == _npc) { UTIL.delSysListener("wait"); if (curAct.indexOf("wait ") > -1) params.idx++; else params.paths[params.idx] = params.paths[params.idx].substring(5); PLU.actions(params); } }); return; } //对话 if (curAct.indexOf("ask#") > -1) { if (curAct.indexOf("?") > -1) { var _UTIL$findRoomNpc; var npc = (_UTIL$findRoomNpc = UTIL.findRoomNpc(curAct.substring(curAct.indexOf("?") + 1), 0, 1)) === null || _UTIL$findRoomNpc === void 0 ? void 0 : _UTIL$findRoomNpc.key; } else { var npc = curAct.substring(curAct.indexOf(" ") + 1); } npc && clickButton("ask " + npc); params.paths[params.idx] = params.paths[params.idx].substring(4); PLU.actions(params); return; } //去比试 if (curAct.indexOf("fight?") > -1 || curAct.indexOf("fight ") > -1) { var kt = parseInt(PLU.getCache("autoPerform")) < 1 ? "multi" : ""; PLU.autoFight({ targetName: curAct.indexOf("fight?") > -1 ? curAct.substring(6) : null, targetKey: curAct.indexOf("fight ") > -1 ? curAct.substring(6) : null, fightKind: "fight", autoSkill: kt, onFail: function onFail() { setTimeout(function () { params.idx++; PLU.actions(params); }, 500); }, onEnd: function onEnd() { setTimeout(function () { params.idx++; PLU.actions(params); }, 500); } }); return; } //去杀 if (curAct.indexOf("kill?") > -1 || curAct.indexOf("kill ") > -1) { var _kt = parseInt(PLU.getCache("autoPerform")) < 1 ? "multi" : ""; PLU.autoFight({ targetName: curAct.indexOf("kill?") > -1 ? curAct.substring(5) : null, targetKey: curAct.indexOf("kill ") > -1 ? curAct.substring(5) : null, autoSkill: _kt, onFail: function onFail() { setTimeout(function () { params.idx++; PLU.actions(params); }, 500); }, onEnd: function onEnd() { setTimeout(function () { params.idx++; PLU.actions(params); }, 500); } }); return; } // 去摸尸体 if (curAct.indexOf("get?") > -1) { UTIL.getItemFrom(curAct.substring(4)); setTimeout(function () { params.idx++; PLU.actions(params); }, 500); return; } // 去摸尸体 if (curAct.indexOf("@") > -1) { UTIL.getItemFrom(curAct.substring(1)); setTimeout(function () { params.idx++; PLU.actions(params); }, 500); return; } // 叫船 if (curAct.indexOf("yell") > -1) { var yellBoatTimeout = setTimeout(function (e) { clearTimeout(yellBoatTimeout); UTIL.delSysListener("goYellBoat"); params.idx++; PLU.actions(params); }, 120000); UTIL.addSysListener("goYellBoat", function (b, type, subtype, msg) { if (type == "main_msg" && msg.indexOf("还没有达到这") > -1) { setTimeout(function () { clearTimeout(yellBoatTimeout); UTIL.delSysListener("goYellBoat"); PLU.actions(params); }, 2000); return; } if (type == "notice" && msg.indexOf("这儿没有船可以喊") > -1) { setTimeout(function () { clearTimeout(yellBoatTimeout); UTIL.delSysListener("goYellBoat"); params.idx++; PLU.actions(params); }, 500); return; } if (type != "jh" || subtype != "info") return; var _iterator3 = _createForOfIteratorHelper(b.keys()), _step3; try { for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { var key = _step3.value; var val = b.get(key); if (val.indexOf("yell") < 0) continue; clearTimeout(yellBoatTimeout); UTIL.delSysListener("goYellBoat"); params.idx++; PLU.actions(params); break; } } catch (err) { _iterator3.e(err); } finally { _iterator3.f(); } }); clickButton(curAct); return; } if (curAct.indexOf("vs:")>-1) { PLU.autoFight({ targetCommand: curAct.substring(3) || "none", onFail: function onFail() { setTimeout(function () { params.idx++; PLU.actions(params); }, 500); }, onEnd: function onEnd() { setTimeout(function () { params.idx++; PLU.actions(params); }, 500); } }); return; } //函式 if (curAct.indexOf("eval_") > -1) { eval(curAct.substring(5)); setTimeout(function () { params.idx++; PLU.actions(params); }, 500); return; } //检查地点重走 if (curAct.indexOf("place?") > -1) { var pName = curAct.split(/[?:]/)[1]; var curName = UTIL.filterMsg(g_obj_map.get("msg_room").get("short") || ""); var backStep = curAct.split(/[?:]/)[2]; // 未到达指定地,重新走 if (pName != curName) { if (parseInt(backStep)) { //退后几步 params.idx -= Number(backStep); } else if (backStep) { var _params$paths; (_params$paths = params.paths).slice.apply(_params$paths, [params.idx, 0].concat(_toConsumableArray(backStep.split(",")))); console.debug(params); } else { params.idx = 0; } PLU.actions(params); return; } // 已到达指定地点,继续下一个 params.idx++; PLU.actions(params); return; } //迷宫 if (curAct.match(/^(.+):(.+\^.+)$/)) { var cmd = curAct.match(/^(.+):(.+\^.+)$/); PLU.execActions(PLU.YFD.mapsLib.Labyrinth[cmd[1]][cmd[2]], function () { params.idx++; PLU.actions(params); }); return; } //称号飞修正 if (curAct.indexOf("rank go") > -1) { var m = curAct.match(/rank go (\d+)/); if (m && m[1]) { curAct = "rank go " + (Number(m[1]) + 1); } } //look,ask, if (curAct.match(/look|ask|get|buy|home|prev|moke|sort|share|sign|sleep|exercise|clan|work|chushi |vip |event_|lq_|wear |wield |remove |unwield/)) { if (curAct == "ask?lama_master") { UTIL.addSysListener("lama", function (b, type, subtype, msg) { if (type == "main_msg") if (msg.indexOf("葛伦师傅在幻境之中") == -1) clickButton("ask lama_master"); else { params.idx++; PLU.actions(params); UTIL.delSysListener("lama"); } }); clickButton("ask lama_master"); } else { clickButton(curAct); setTimeout(function () { params.idx++; PLU.actions(params); }, 300); } return; } // 全杀了 if (curAct.indexOf("ak") > -1) { PLU.allkill(params); return; } if (curAct == "飞雪连天射白鹿,笑书神侠倚碧鸳。") { if (PLU.developerMode) { PLU.setCache("developer", 0); YFUI.writeToOut("<span style='color:white;'>==已关闭开发者模式部分功能,刷新后关闭开发者模式全部功能==</span>"); setTimeout(function () { return location.reload(); }, 300); } else { YFUI.showPop({ title: "!!!警告!!!", text: "你将开启本脚本开发者模式<br>" + "开发者模式功能清单:<br>" + "浏览器控制台(F12)输出按键指令、变量g_obj_map的实时变化<br>" + "闲聊允许向非脚本玩家打印屏蔽词(屏蔽词不会转为“*”,单字、特殊字符除外)<br>" + "可在非首页、非师傅所在地拜入门派,包括未开图的隐藏门派(掌握空间法则(误))<br>" + "显示全自动暴击开关(掌握时间法则(延长寿命(<br>" + "<b>专属功能可能会使你触摸到轮回法则(夏格艾迪剑),是否继续?</b>", okText: "继续", onOk: function onOk() { PLU.setCache("developer", 1); location.reload(); }, onNo: function onNo() { params.idx++; PLU.actions(params); } }); } return; } //行动 PLU.go({ action: curAct, onEnd: function onEnd() { if (params.idx + 1 >= params.paths.length) { return params.onPathsEnd && params.onPathsEnd(); } params.idx++; PLU.actions(params); }, onFail: function onFail(flag, msg) { if (flag && PLU.STATUS.inBattle) { PLU.autoEscape({ onEnd: function onEnd() { setTimeout(function () { PLU.actions(params); }, 1000); } }); return; } else if (flag) { if (PLU.STO.REGO) { clearTimeout(PLU.STO.REGO); PLU.STO.REGO = null; } PLU.STO.REGO = setTimeout(function () { params.idx++; PLU.actions(params); }, 1000); } else { params.onPathsFail && params.onPathsFail(msg); } } }); }, //================================================================================================ go: function go(_ref2) { var action = _ref2.action, onEnd = _ref2.onEnd, onFail = _ref2.onFail; if (!action) return onEnd && onEnd(false); var clearGoTimeout = function clearGoTimeout(timeoutKey) { clearTimeout(timeoutKey); timeoutKey = null; UTIL.delSysListener("goMove"); }; var goTimeout = setTimeout(function () { clearGoTimeout(goTimeout); onEnd && onEnd(false); }, 2000); UTIL.addSysListener("goMove", function (b, type, subtype, msg) { if (type == "notice" && subtype == "notify_fail") { if (msg.indexOf("你正忙着呢") > -1) { clearGoTimeout(goTimeout); return onFail && onFail(true); } if (msg.indexOf("无法走动") > -1 || msg.indexOf("没有这个方向") > -1 || msg.indexOf("只有VIP才可以直接去往此地") > -1 || msg.indexOf("你什么都没发觉") > -1 || msg.indexOf("就此钻入恐有辱墓主") > -1 || msg.indexOf("你虽知这松林内有乾坤,但并没发现任何线索") > -1 || msg.indexOf("此地图还未解锁,请先通关前面的地图。") > -1) { clearGoTimeout(goTimeout); return onFail && onFail(false, msg); } } if (type == "unknow_command" || type == "jh" && subtype == "info") { clearGoTimeout(goTimeout); setTimeout(function () { onEnd && onEnd(true); }, 200); return; } }); clickButton(action); }, //================================================================================================ fastExec: function fastExec(str, endcallback) { var acs = str.split(";"); acs = acs.map(function (e) { var np = e.match(/^#(\d+)\s(.*)/); if (np) { var r = []; for (var i = 0; i < np[1]; i++) r.push(np[2]); return r; } return e; }).flat(); acs = acs.map(function (e) { if (PLU.YFD.pathCmds[e]) return PLU.YFD.pathCmds[e] + "." + UTIL.rnd(); return e; }); var fastFunc = function fastFunc(acts, idx) { if (idx >= acts.length) { setTimeout(function () { endcallback && endcallback(true); }, 1000); return; } var curAct = acts[idx]; if (!curAct) return fastFunc(acts, idx + 1); clickButton(curAct); setTimeout(function () { fastFunc(acts, idx + 1); }, 200); return; }; fastFunc(acs, 0); }, //================================================================================================ selectSkills: function selectSkills(skillName) { if (!PLU.battleData || !PLU.battleData.skills) return null; var keys = Object.keys(PLU.battleData.skills); if (skillName) { for (var i = 0; i < keys.length; i++) { var sk = PLU.battleData.skills[keys[i]]; if (sk && sk.name && sk.name.match(skillName)) return sk; } } else { var n = Math.floor(keys.length * Math.random()); return PLU.battleData.skills[keys[n]]; } return null; }, //================================================================================================ autoFight: function autoFight(params) { var _params$fightKind, _params$targetCommand; if (PLU.STO.autoF) { clearTimeout(PLU.STO.autoF); PLU.STO.autoF = null; } if (!params.targetKey && !params.targetName && !params.targetCommand) { params.onFail && params.onFail(0); YFUI.writeToOut("<span style='color:#FFF;'>--战斗参数缺失--</span>"); return; } if (params.targetName && !params.targetKey) { var npcObj = UTIL.findRoomNpc(params.targetName, false, true); if (npcObj) { params.targetKey = npcObj.key; } else { params.onFail && params.onFail(1); YFUI.writeToOut("<span style='color:#FFF;'>--找不到NPC--</span>"); return; } } var fightAct = (_params$fightKind = params.fightKind) !== null && _params$fightKind !== void 0 ? _params$fightKind : "kill"; var performTime = 0; UTIL.addSysListener("onAutoFight", function (b, type, subtype, msg) { if (type == "vs" && subtype == "vs_info") { setTimeout(function () { if (params.autoSkill && PLU.battleData) PLU.battleData.autoSkill = params.autoSkill; }, 100); if (PLU.TMP.loopCheckFight) { clearInterval(PLU.TMP.loopCheckFight); PLU.TMP.loopCheckFight = null; } PLU.TMP.loopCheckFight = setInterval(function () { if (!g_gmain.is_fighting) { UTIL.delSysListener("onAutoFight"); if (PLU.STO.autoF) { clearTimeout(PLU.STO.autoF); PLU.STO.autoF = null; } if (PLU.TMP.loopCheckFight) { clearInterval(PLU.TMP.loopCheckFight); PLU.TMP.loopCheckFight = null; } params.onEnd && params.onEnd(); } }, 2000); params.onStart && params.onStart(); } else if (type == "vs" && (subtype == "add_xdz" || subtype == "text" || subtype == "attack")) { var curTime = new Date().getTime(); if (curTime - performTime < 500) return; performTime = curTime; var useSkill = null; if (params.autoSkill) { if (!PLU.battleData || PLU.battleData.xdz < 2) return; if (params.autoSkill == "item") { if (PLU.battleData.xdz >= 6) useSkill = { key: "playskill 7" }; else useSkill = {}; } else if (params.autoSkill == "dodge") { if (PLU.battleData.xdz > 9) useSkill = PLU.selectSkills(/乾坤大挪移|凌波微步|无影毒阵|九妙飞天术/); } else if (params.autoSkill == "multi") { if (PLU.battleData.xdz > 2) useSkill = PLU.selectSkills(/破军棍法|千影百伤棍|八荒功|月夜鬼萧|打狗棒法|朝天一棍/); } else if (params.autoSkill == "fast") { if (PLU.battleData.xdz >= 2) useSkill = PLU.selectSkills(/吸星大法|斗转星移|无影毒阵|空明拳|乾坤大挪移/); } if (!useSkill) { if (PLU.getCache("autoPerform") >= 1) { PLU.battleData.autoSkill = ""; return; } if (params.autoSkill) PLU.battleData.autoSkill = ""; useSkill = PLU.selectSkills(); } if (params.onFighting) { var block = params.onFighting(useSkill); if (block) return; } useSkill && clickButton(useSkill.key, 0); } else { params.onFighting && params.onFighting(); } } else if (type == "vs" && subtype == "combat_result") { performTime = 0; UTIL.delSysListener("onAutoFight"); if (PLU.STO.autoF) { clearTimeout(PLU.STO.autoF); PLU.STO.autoF = null; } if (PLU.TMP.loopCheckFight) { clearInterval(PLU.TMP.loopCheckFight); PLU.TMP.loopCheckFight = null; } //clickButton("prev_combat"); params.onEnd && params.onEnd(); } else if (type == "notice" && subtype == "notify_fail") { var errCode = 0; if (msg.indexOf("没有这个人") > -1) { errCode = 1; } else if (msg.indexOf("你正忙着呢") > -1) { errCode = 2; } else if (msg.indexOf("已经超量") > -1) { errCode = 3; } else if (msg.indexOf("已达到上限") > -1 || msg.indexOf("挑战太多了") > -1) { errCode = 4; } else if (msg.indexOf("太多人了") > -1) { errCode = 5; } else if (msg.indexOf("不能战斗") > -1 || msg.indexOf("不能加入这个战场") > -1) { errCode = 6; } else if (msg.indexOf("秒后才能攻击这个人") > -1) { var sat = msg.match(/(\d+)秒后才能攻击这个人/); if (sat) errCode = "delay_" + sat[1]; else errCode = 77; } else if (msg.indexOf("先观察一下") > -1) { errCode = 88; } else { if (!PLU.STATUS.inBattle) { errCode = 99; } } if (errCode) UTIL.delSysListener("onAutoFight"); if (PLU.STO.autoF) { clearTimeout(PLU.STO.autoF); PLU.STO.autoF = null; } if (PLU.TMP.loopCheckFight) { clearInterval(PLU.TMP.loopCheckFight); PLU.TMP.loopCheckFight = null; } params.onFail && params.onFail(errCode); } }); PLU.STO.autoF = setTimeout(function () { PLU.STO.autoF = null; if (!g_gmain.is_fighting) { UTIL.delSysListener("onAutoFight"); if (PLU.TMP.loopCheckFight) { clearInterval(PLU.TMP.loopCheckFight); PLU.TMP.loopCheckFight = null; } return params.onFail && params.onFail(100); } }, 300000); if (params.targetCommand != "none") { clickButton((_params$targetCommand = params.targetCommand) !== null && _params$targetCommand !== void 0 ? _params$targetCommand : fightAct + " " + params.targetKey, 0); } }, //================================================================================================ autoEscape: function autoEscape(params) { if (!PLU.STATUS.inBattle) return params.onEnd && params.onEnd(); var lastEscapeTime = new Date().getTime(); UTIL.addSysListener("onAutoEscape", function (b, type, subtype, msg) { if (type == "vs" && subtype == "combat_result") { UTIL.delSysListener("onAutoEscape"); clickButton("prev_combat"); return params.onEnd && params.onEnd(); } else if (type == "vs" && (subtype == "add_xdz" || subtype == "text" || subtype == "attack")) { var nt = new Date().getTime(); if (nt - lastEscapeTime > 500) { lastEscapeTime = nt; clickButton("escape"); } } }); }, //================================================================================================ setBtnRed: function setBtnRed($btn, flag, sColr) { if (!PLU.ONOFF[$btn[0].id + "_color"]) { PLU.ONOFF[$btn[0].id + "_color"] = $btn.css("background-color"); var carr = PLU.ONOFF[$btn[0].id + "_color"].split(/[\D\s]+/); carr.pop(); carr.shift(); if (carr[0] == carr[1] && carr[1] == carr[2]) { carr[1] = carr[1] - 32; carr[2] = carr[2] - 32; } var m = carr.reduce(function (a, b) { return (Number(a) + Number(b)) / 2; }); var narr = carr.map(function (e) { return Math.min(e - 96 + 4 * (e - m), 256); }); PLU.ONOFF[$btn[0].id + "_colorDark"] = "rgb(" + narr.join(",") + ")"; } if (flag == undefined) { if (PLU.ONOFF[$btn[0].id]) { PLU.ONOFF[$btn[0].id] = 0; $btn.css({ background: PLU.ONOFF[$btn[0].id + "_color"], color: "#000" }); return 0; } else { PLU.ONOFF[$btn[0].id] = 1; $btn.css({ background: PLU.ONOFF[$btn[0].id + "_colorDark"], color: "#FFF" }); return 1; } } else { PLU.ONOFF[$btn[0].id] = flag; var colr = sColr || PLU.ONOFF[$btn[0].id + "_color"], fcolr = "#000"; if (flag) { colr = sColr || PLU.ONOFF[$btn[0].id + "_colorDark"]; fcolr = "#FFF"; } $btn.css({ background: colr, color: fcolr }); return flag; } }, getBtnRed: function getBtnRed($btn) { if (PLU.ONOFF[$btn[0].id]) return 1; return 0; }, //================================================================================================ toAutoChuaiMo: function toAutoChuaiMo($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) { PLU.STATUS.isBusy = false; PLU.TMP.CMSkill = null; return; } YFUI.showPop({ title: "自动揣摩技能", text: "一键自动揣摩所有能揣摩的技能!(除了六阴追魂剑法)", onOk: function onOk() { PLU.autoChuaiMo(); }, onNo: function onNo() { PLU.setBtnRed($btn, 0); } }); }, //================================================================================================ toAutoLianXi: function toAutoLianXi($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) { PLU.STATUS.isBusy = false; PLU.TMP.CMSkill = null; return; } YFUI.showPop({ title: "自动练习技能", text: "开启自动练习技能!(除了六阴剑、九阴爪、九阴刀)", onOk: function onOk() { PLU.autoLianXi(); }, onNo: function onNo() { PLU.setBtnRed($btn, 0); } }); }, //================================================================================================ /* toAutoGetKey: function toAutoGetKey($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) { return UTIL.delSysListener("listenGetKey"); } clickButton("get yin yaoshi"); UTIL.addSysListener("listenGetKey", function (b, type, subtype, msg) { if (g_obj_map.get("msg_room") && g_obj_map.get("msg_room").get("short").match(/匾后/)) { if (type == "jh") { if (subtype == "new_item") { if (b.get("id") == "yin yaoshi") clickButton("get yin yaoshi"); } else if (subtype == "info") { clickButton("get yin yaoshi"); } } } }); }, */ toAutoGetKey: function toAutoGetKey($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) { return; } UTIL.addSysListener("listgetdaoju", function (b, type, subtype, msg) { if (type == "jh" && subtype == "new_item") { var autogetNames = PLU.getCache("getdaoju") || "钥匙,天山雪莲"; autogetNames = autogetNames.split(","); var namesw = b.get("name"); for (var i = autogetNames.length - 1; i >= 0; i--) { if (namesw.indexOf(autogetNames[i]) > -1) { go("get " + b.get("id")); } } } }); YFUI.showInput({ title: "捡取物品", text: '格式:捡取物品名称<br>\n ', value: PLU.getCache("getdaoju") || "钥匙,天山雪莲", onOk: function onOk(val) { if (!$.trim(val)) return; var str = $.trim(val); PLU.setCache("getdaoju", str); }, onNo: function onNo() { PLU.setBtnRed($btn, 0); UTIL.delSysListener("listgetdaoju"); }, }); }, //================================================================================================ toAutoMoke: function toAutoMoke($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) { PLU.STATUS.isBusy = false; return; } PLU.getAllItems(function (list) { var daoItems = list.find(function (it) { return !!it.name.match("玄铁刻刀"); }); var daoNum = (daoItems === null || daoItems === void 0 ? void 0 : daoItems.num) || 0; var eqItems = list.filter(function (it) { return !!(it.key.match(/(equip|weapon)_\S+([8-9]|[10-12])/) && !it.key.match("_moke_") && !it.key.match("_xinwu") && !it.key.match("_barcer")); }); var myNum = 0; eqItems && eqItems.forEach(function (eq) { myNum += eq.num; }); console.log(eqItems); YFUI.showPop({ title: "自动摹刻所有明月", text: "一键自动摹刻所有明月装备!<br><span style='color:#F00;font-weight:bold;'>注意准备足够的刻刀!!!</span><br>当前玄铁刻刀数量 <span style='color:#F00;'>" + daoNum + "</span><br>当前未摹刻明月装备数量 <span style='color:#F00;'>" + myNum + "</span>", onOk: function onOk() { PLU.autoMoke(eqItems); }, onNo: function onNo() { PLU.setBtnRed($btn, 0); } }); }); }, autoMoke: function autoMoke(eqList) { if (!PLU.ONOFF["btn_bt_autoMoke"]) return YFUI.writeToOut("<span style='color:#F0F;'> ==摹刻暂停!== </span>"); if (eqList && eqList.length > 0) { var eq = eqList.pop(), mokeCmds = ""; mokeCmds; for (var i = 0; i < eq.num; i++) { mokeCmds += "moke " + eq.key + ";"; } PLU.execActions(mokeCmds, function () { return PLU.autoMoke(eqList); }); } else { PLU.setBtnRed($("#btn_bt_autoMoke"), 0); YFUI.writeToOut("<span style='color:yellow;'> ==摹刻完毕!== </span>"); } }, //================================================================================================ toAutoKillZYY: function toAutoKillZYY($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) { return UTIL.delSysListener("listenLoopKillZYY"); } YFUI.showPop({ title: "自动去刷祝玉妍", text: "自动去刷祝玉妍!<br><span style='color:#FFF;background:#F00;font-weight:bold;'>----- 注意: -----</span><br><span style='color:#F00;font-weight:bold;'>1、准备足够的邪帝舍利!!!<br>2、不要有队伍!!!<br>3、切记要打开自动技能阵!!!<br>4、要上足够的保险卡!!!</span>", onOk: function onOk() { PLU.execActions("rank go 232;s;s;;;", function () { PLU.loopKillZYY(); }); }, onNo: function onNo() { PLU.setBtnRed($btn, 0); UTIL.delSysListener("listenLoopKillZYY"); } }); }, loopKillZYY: function loopKillZYY() { UTIL.addSysListener("listenLoopKillZYY", function (b, type, subtype, msg) { if (type == "vs" && subtype == "combat_result") { if (!PLU.ONOFF["btn_bt_autoKillZYY"]) { PLU.execActions(";;;n;", function () { YFUI.writeToOut("<span style='color:yellow;'>=====刷祝玉妍结束!!=====</span>"); UTIL.delSysListener("listenLoopKillZYY"); }); } else { PLU.execActions(";;;n;s"); } } }); clickButton("s"); }, //================================================================================================ toAutoFB11: function toAutoFB11($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) { return UTIL.delSysListener("listenFB11"); } YFUI.showPop({ title: "自动副本11", text: '自动打副本11!<br>\n <span style=\'color:#F00;font-weight:bold;\'>----- 选择要打的门 -----</span><br>\n <div style="font-size:12px;line-height:2;box">\n <label style="display:inline-block;width: 31%;text-align:center;border:1px solid #333;">8 懒惰<input type="checkbox" name="chkfb11" value="nw" checked/></label>\n <label style="display:inline-block;width: 31%;text-align:center;border:1px solid #333;">1非时食<input type="checkbox" name="chkfb11" value="n" checked/></label>\n <label style="display:inline-block;width: 31%;text-align:center;border:1px solid #333;">2 杀生<input type="checkbox" name="chkfb11" value="ne" checked/></label>\n <br>\n <label style="display:inline-block;width: 31%;text-align:center;border:1px solid #333;">7 奢华<input type="checkbox" name="chkfb11" value="w" checked/></label>\n <span style="display:inline-block;width: 31%;color:#999;text-align:center;border:1px solid transparent;">初心之地</span>\n <label style="display:inline-block;width: 31%;text-align:center;border:1px solid #333;">3 偷盗<input type="checkbox" name="chkfb11" value="e" checked/></label>\n <br>\n <label style="display:inline-block;width: 31%;text-align:center;border:1px solid #333;">6 饮酒<input type="checkbox" name="chkfb11" value="sw" checked/></label>\n <label style="display:inline-block;width: 31%;text-align:center;border:1px solid #333;">5 妄语<input type="checkbox" name="chkfb11" value="s" checked/></label>\n <label style="display:inline-block;width: 31%;text-align:center;border:1px solid #333;">4 淫邪<input type="checkbox" name="chkfb11" value="se" checked/></label><br>\n </div>\n <span style=\'color:#F00;font-weight:bold;\'>1、在副本外开始脚本<br>2、记得要组队<br></span>', okText: "开始", onOk: function onOk() { var chks = $('input[name="chkfb11"]:checked'); var selects = []; $.each(chks, function (i, e) { selects.push(e.value); }); if (selects.length == 0) return false; console.log(selects); //PLU.TMP.chkTmpList=[] //PLU.execActions('rank go 232;s;s;;;', ()=>{ PLU.autoToFB11(selects); //}) //UTIL.findRoomNpcReg }, onNo: function onNo() { PLU.setBtnRed($btn, 0); UTIL.delSysListener("listenFB11"); } }); }, autoToFB11: function autoToFB11() { }, killAllNpc: function killAllNpc(callback) { var npcObj = UTIL.findRoomNpcReg(""); if (npcObj) { var needAutoSkill = PLU.getCache("autoPerform") >= 1 ? null : "multi"; PLU.autoFight({ targetKey: npcObj.key, fightKind: "kill", autoSkill: needAutoSkill, onFail: function onFail() { setTimeout(function (t) { PLU.killAllNpc(callback); }, 1000); }, onEnd: function onEnd() { setTimeout(function (t) { PLU.killAllNpc(callback); }, 500); } }); } else { callback && callback(); } }, killyoumhy: function killyoumhy(endCallback) { var flag = false; PLU.execActions("jh 45;ne;ne;n;n;ne;ne;e;ne;#5 n;ne;ne;#3 n;nw;nw;n;#5 e;event_1_77775145 ymsz_houyuan;", function (f) { if (!f) return endCallback && endCallback(1); PLU.execActions("se;ak;=300;;se;=300;;s;=300;;w;=300;;e;=300;e;=300;;w=300;;s=300;;;s=300;;;s=300;;;w;=300;;e;=300;e;=300;;s=300;;;n;=300;e;;=300;e;;=300;n;=300;;s=300;;e=300;;;e=300;;;n;=300;attrs;;attrs;;attrs;;attrs;;attrs;;attrs;;ka;;", function (f2) { if (!f2) return endCallback && endCallback(2); PLU.execActions("=300;home;"); }); }); }, killFB11: function killFB11(endCallback) { var flag = false; PLU.execActions("fb 11;", function (f) { if (!f) return endCallback && endCallback(1); setTimeout(function () { PLU.execActions("nw;kill bajieshendian_zhushajun;se;n;kill bajieshendian_shishenyiya;s;ne;kill bajieshendian_shashenyanmin;sw;e;kill bajieshendian_daoshenwentao;w;se;kill bajieshendian_xieshenyecha;nw;s;kill bajieshendian_shangbaozheng;n;sw;kill bajieshendian_libai;ne;w;kill bajieshendian_yangguang;w;kill bajieshendian_yingzheng;e;e;nw;nw;kill bajieshendian_chengzhuanlaozhu;se;se;n;n;kill bajieshendian_penzhu;s;s;ne;ne;kill bajieshendian_shashenbaiqi;sw;sw;e;e;kill bajieshendian_daoshenwudaojianjun;w;w;se;se;kill bajieshendian_xieshenxintian;nw;nw;s;s;kill bajieshendian_maxinkong;n;n;sw;sw;kill bajieshendian_jiushenyidi;kill bajieshendian_luanzhixinmo;", function (f2) { if (!f2) return endCallback && endCallback(2); setTimeout(function () { PLU.execActions("=2400;event_1_68529291;"); }, 2000); }); }, 2000); }); }, killFB10: function killFB10(endCallback) { var flag = false; PLU.execActions("fb 10;", function (f) { if (!f) return endCallback && endCallback(1); PLU.execActions("event_1_31980331;ak;;fb 10;event_1_23348240;;;fb 10;event_1_84015482;;;fb 10;event_1_25800358;;;event_1_24864938;;;fb 10;event_1_31980331;event_1_98378977;;;event_1_5376728;;event_1_43541317;;ka;event_1_5914414;", function (f2) { if (!f2) return endCallback && endCallback(2); PLU.execActions("home;"); }); }); }, //================================================================================================ checkYouxia: function checkYouxia($btn) { YFUI.showPop({ title: "检查入室游侠技能", text: '选择需要的对应技能:<br>\n <div style="font-size:15px;">\n <label style="display:inline-block;">内功:<input type="checkbox" name="chkskiyx" value="内功" checked/></label> \n <label style="display:inline-block;">轻功:<input type="checkbox" name="chkskiyx" value="轻功" checked/></label> \n <label style="display:inline-block;">剑法:<input type="checkbox" name="chkskiyx" value="剑法" checked/></label> \n <label style="display:inline-block;">掌法:<input type="checkbox" name="chkskiyx" value="掌法" checked/></label> \n <label style="display:inline-block;">刀法:<input type="checkbox" name="chkskiyx" value="刀法" checked/></label> \n <label style="display:inline-block;">暗器:<input type="checkbox" name="chkskiyx" value="暗器"/></label> \n <label style="display:inline-block;">鞭法:<input type="checkbox" name="chkskiyx" value="鞭法"/></label> \n <label style="display:inline-block;">枪法:<input type="checkbox" name="chkskiyx" value="枪法"/></label> \n <label style="display:inline-block;">锤法:<input type="checkbox" name="chkskiyx" value="锤法"/></label> \n <label style="display:inline-block;">斧法:<input type="checkbox" name="chkskiyx" value="斧法"/></label>\n </div>', onOk: function onOk() { var chks = $('input[name="chkskiyx"]:checked'); var selects = []; PLU.TMP.chkTmpList = []; $.each(chks, function (i, e) { selects.push(e.value); }); PLU.getSkillsList(function (allSkills, tupoSkills) { PLU.getYouxiaList(function (yxs) { PLU.checkMySkills(allSkills, yxs, selects); }); }); }, onNo: function onNo() { } }); }, checkMySkills: function checkMySkills(mySkills, myYouxia, checkList) { // console.log(mySkills, myYouxia, checkList) var clstr = ""; checkList.forEach(function (c) { return clstr += "【" + c[0] + "】"; }); YFUI.writeToOut("<span style='color:#FFF;'>--技能检测 <span style='color:yellow;'>" + clstr + "</span>--</span>"); checkList.forEach(function (cn) { var carr = PLU.YFD.youxiaSkillMap.filter(function (r) { return r.type == cn; }); carr.forEach(function (n) { PLU.checkPreSKill(n, mySkills, myYouxia); }); }); if (PLU.TMP.chkTmpList.length == 0) { YFUI.writeToOut("<span style='color:yellow;'>检查的技能都准备好了!</span>"); } }, checkPreSKill: function checkPreSKill(node, mySkills, myYouxia) { var ms = mySkills.find(function (s) { return s.name == node.skill; }); if (!ms && !PLU.TMP.chkTmpList.includes(node.skill)) { PLU.TMP.chkTmpList.push(node.skill); var clr = node.kind == "宗师" || node.kind == "侠客" ? "#E93" : "#36E"; var htm = '<span style="color:' + clr + ';">【' + node.type[0] + "】" + node.skill + " "; //htm+= ms?'<span style="color:#3F3;display:inline-block;">('+ms.level+')</span>':'(缺)'; htm += '<span style="color:#F00;display:inline-block;">(未学)</span>'; var myx = myYouxia.find(function (y) { return y.name.match(node.name); }); htm += " - " + (myx ? '<span style="color:#3F3;display:inline-block;">' + myx.name + "[" + myx.level + "]</span>" : '<span style="color:#F36;display:inline-block;">需要:<span style="color:#FFF;background:' + clr + ';"> ' + node.kind + "-" + node.name + " </span></span>"); htm += "</span>"; YFUI.writeToOut(htm); } if (node.pre) { node.pre.forEach(function (n) { PLU.checkPreSKill(n, mySkills, myYouxia); }); } }, getYouxiaList: function getYouxiaList(callback) { UTIL.addSysListener("getYouxiaList", function (b, type, subtype, msg) { if (type != "fudi" && subtype != "juxian") return; UTIL.delSysListener("getYouxiaList"); clickButton("prev"); var youxias = []; for (var i = 0; i < 41; i++) { var str = b.get("yx" + i); if (str) { var attr = str.split(","); var ns = UTIL.filterMsg(attr[1]).split("】"); var nam = ns.length > 1 ? ns[1] : ns[0]; youxias.push({ key: attr[0], name: nam, level: Number(attr[4]), kind: attr[3] }); } } callback(youxias); }); clickButton("fudi juxian"); }, //================================================================================================ toAutoLearn: function toAutoLearn($btn) { if (!PLU.TMP.MASTER_SKILLS) { return YFUI.showPop({ title: "缺少数据", text: "需要打开师傅技能界面" // onOk(){ // }, }); } // console.log(PLU.TMP.MASTER_ID, PLU.TMP.MASTER_SKILLS) var needSkills = []; PLU.getSkillsList(function (allSkills, tupoSkills) { PLU.TMP.MASTER_SKILLS.forEach(function (ms) { var sk = allSkills.find(function (s) { return s.key == ms.key; }) || { level: 0 }; if (sk.level < ms.level) { needSkills.push({ key: ms.key, name: ms.name, lvl: ms.level - sk.level, cmd: "learn " + ms.key + " from " + PLU.TMP.MASTER_ID + " to 10" }); } }); //console.log(needSkills.map(e=>e.name)) loopLearn(needSkills); }); var curSkill = null; UTIL.addSysListener("loopLearnSkill", function (b, type, subtype, msg) { if (type == "notice" && msg.indexOf("不愿意教你") >= 0) { //UTIL.delSysListener("loopLearnSkill"); if (curSkill) curSkill.lvl = -1; } return; }); var loopLearn = function loopLearn(list) { if (list.length > 0) { if (list[0].lvl > 0) { list[0].lvl -= 10; curSkill = list[0]; clickButton(list[0].cmd); } else { list.shift(); } setTimeout(function () { loopLearn(list); }, 200); } else { UTIL.delSysListener("loopLearnSkill"); YFUI.writeToOut("<span style='color:#FFF;'>----自动学习结束,记得检查噢!----</span>"); } }; }, //================================================================================================ autoChuaiMo: function autoChuaiMo() { if (!PLU.ONOFF["btn_bt_autoChuaiMo"]) return; PLU.STATUS.isBusy = true; if (!PLU.TMP.CMSkill) { PLU.getSkillsList(function (allSkills, tupoSkills) { if (!PLU.TMP.CANTCMS) PLU.TMP.CANTCMS = []; PLU.TMP.CMSkill = allSkills.find(function (e) { return e.level >= 500 && e.level < 600 && e.name != "六阴追魂剑法" && (e.kind == "attack" || e.kind == "recovery" || e.kind == "force") && !PLU.TMP.CANTCMS.includes(e.name); }); if (!PLU.TMP.CMSkill) { PLU.STATUS.isBusy = false; PLU.TMP.CMSkill = null; PLU.setBtnRed($("#btn_bt_autoChuaiMo"), 0); } else { clickButton("enable " + PLU.TMP.CMSkill.key); UTIL.addSysListener("listenChuaiMo", function (b, type, subtype, msg) { if (type == "notice" && (msg.indexOf("揣摩最高等级为") >= 0 || msg.indexOf("这项技能不能揣摩") >= 0)) { UTIL.delSysListener("listenChuaiMo"); if (msg.indexOf("这项技能不能揣摩") >= 0) { PLU.TMP.CANTCMS.push(PLU.TMP.CMSkill.name); } YFUI.writeToOut("<span style='color:#FFF;'>--揣摩结束--</span>"); PLU.TMP.CMSkill = null; } return; }); } PLU.autoChuaiMo(); }); } else { clickButton("chuaimo go," + PLU.TMP.CMSkill.key, 0); setTimeout(function (e) { PLU.autoChuaiMo(); }, 250); } }, //================================================================================================ autoLianXi: function (_autoLianXi) { function autoLianXi() { return _autoLianXi.apply(this, arguments); } autoLianXi.toString = function () { return _autoLianXi.toString(); }; return autoLianXi; }(function () { PLU.STATUS.isBusy = true; // 设置状态为忙碌 PLU.getSkillsList(function (allSkills, tupoSkills) { // 获取技能列表 PLU.TMP.CANTLXS = PLU.TMP.CANTLXS || []; // 初始化无法练习的技能列表 PLU.TMP.LXISkill = allSkills.find(function (skill) { return skill.level >= 200 && skill.level < 500 && !PLU.TMP.CANTLXS.includes(skill.name) && !["基本钩法", "基本戟法", "六阴追魂剑法", "天魔焚身", "纵意登仙步", "九阴噬骨刀"].includes(skill.name) && ["attack", "recovery"].includes(skill.kind); }); if (!PLU.TMP.LXISkill) { // 如果没有找到合适的技能 PLU.STATUS.isBusy = false; return; } clickButton("enable " + PLU.TMP.LXISkill.key); // 启用找到的技能 UTIL.addSysListener("listenLianXi", function (b, type, subtype, msg) { if (type === "notice") { if (msg.includes("练习已经不能提高了") || msg.includes("这项技能不能练习")) { // 处理练习结束的情况 UTIL.delSysListener("listenLianXi"); if (msg.includes("这项技能不能练习")) { PLU.TMP.CANTLXS.push(PLU.TMP.LXISkill.name); } clearTimeout(PLU.TMP.timer); PLU.STATUS.isBusy = false; PLU.TMP.LXISkill = null; } else if (msg.includes("你开始练习")) { // 如果正在练习其他技能 UTIL.delSysListener("listenLianXi"); YFUI.writeToOut("<span style='color:#FFF;'>--开始练习--</span>"); clearTimeout(PLU.TMP.timer); PLU.STATUS.isBusy = false; PLU.TMP.LXISkill = null; } } }); clickButton("practice " + PLU.TMP.LXISkill.key, 100); // 开始练习技能 PLU.TMP.timer = setTimeout(autoLianXi, 250); // 设置定时器,250毫秒后继续练习 }); }), //================================================================================================ toAutoTeach: function toAutoTeach($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) { PLU.STATUS.isBusy = false; PLU.TMP.TeachSkill = null; return; } YFUI.showPop({ title: "自动传授游侠技能", text: "一键自动传授游侠技能!<b style='color:#F00;'>需要点开游侠技能界面,需要传授的技能不能为0级</b>", onOk: function onOk() { PLU.autoTeach(); }, onNo: function onNo() { PLU.setBtnRed($btn, 0); } }); }, //================================================================================================ autoTeach: function autoTeach() { if (!PLU.ONOFF["btn_bt_autoTeach"]) return; PLU.STATUS.isBusy = true; if (PLU.TMP.CUR_YX_SKILLS) { var ac = PLU.TMP.CUR_YX_SKILLS.find(function (e) { return Number(e.lvl) > 0 && Number(e.lvl) < Number(e.max); }); if (ac) { clickButton(ac.cmd, 0); setTimeout(function (e) { PLU.autoTeach(); }, 200); } else { YFUI.writeToOut("<span style='color:#FFF;'>--传授结束--</span>"); PLU.STATUS.isBusy = false; PLU.setBtnRed($("#btn_bt_autoTeach"), 0); } } else { PLU.STATUS.isBusy = false; PLU.setBtnRed($("#btn_bt_autoTeach"), 0); } }, //================================================================================================ toAutoUpgrade: function toAutoUpgrade($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) { PLU.STATUS.isBusy = false; PLU.TMP.TeachSkill = null; return; } YFUI.showPop({ title: "自动升级游侠等级", text: "一键升级游侠等级!<b style='color:#F00;'>需要点开游侠技能界面</b>", onOk: function onOk() { PLU.autoUpgrade(); }, onNo: function onNo() { PLU.setBtnRed($btn, 0); } }); }, // 今天提升鸠摩智等级的次数已达到上限了。 //不能提升阿朱的等级。 //游侠等级超过上限了。 //================================================================================================ autoUpgrade: function autoUpgrade() { if (!PLU.ONOFF["btn_bt_autoUpgrade"]) return; PLU.STATUS.isBusy = true; if (PLU.TMP.CUR_YX_LEVEL && PLU.TMP.CUR_YX_SKILLS && PLU.TMP.CUR_YX_ENG) { if (PLU.TMP.CUR_YX_SKILLS.length > 4 && PLU.TMP.CUR_YX_LEVEL < 2000) { var canUpgrade = true; UTIL.addSysListener("listenAutoUpgrade", function (b, type, subtype, msg) { if (type == "notice" && (msg.indexOf("等级的次数已达到上限了") >= 0 || msg.indexOf("不能提升") >= 0 || msg.indexOf("等级超过上限了") >= 0)) { UTIL.delSysListener("listenAutoUpgrade"); canUpgrade = false; PLU.STATUS.isBusy = false; YFUI.writeToOut("<span style='color:#FFF;'>--升级结束--</span>"); PLU.setBtnRed($("#btn_bt_autoUpgrade"), 0); } return; }); clickButton("fudi juxian upgrade go " + PLU.TMP.CUR_YX_ENG + " 100"); setTimeout(function (e) { if (canUpgrade) PLU.autoUpgrade(); }, 500); } else { YFUI.writeToOut("<span style='color:#FFF;'>--升级结束--</span>"); PLU.STATUS.isBusy = false; PLU.setBtnRed($("#btn_bt_autoUpgrade"), 0); } } else { PLU.STATUS.isBusy = false; PLU.setBtnRed($("#btn_bt_autoUpgrade"), 0); } }, //================================================================================================ toLoopKillByN: function toLoopKillByN($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) { $("#btn_bt_loopKillByN").text("计数击杀"); return; } clickButton("golook_room"); YFUI.showInput({ title: "计数击杀", text: "输入数量,确定后单击怪!!(数量后带小数点为比试)", value: PLU.getCache("lookKillNum") || 20, onOk: function onOk(val) { if (!Number(val)) return; setTimeout(function (o) { $(document).one("click", function (o) { var snpc = $(o.target).closest("button")[0].outerHTML.match(/clickButton\('look_npc (\w+)'/i); if (snpc && snpc.length >= 2) { var kf = String(val).indexOf(".") > 0 ? "fight" : "kill"; PLU.setCache("lookKillNum", Number(val)); PLU.loopKillByN(snpc[1], parseInt(val), kf); } else { PLU.setBtnRed($btn, 0); } }); }, 500); }, onNo: function onNo() { PLU.setBtnRed($btn, 0); } }); }, //================================================================================================ loopKillByN: function loopKillByN(npcId, killN, killorfight) { if (killN <= 0 || !PLU.ONOFF["btn_bt_loopKillByN"]) return; $("#btn_bt_loopKillByN").text("停(" + killN + ")"); PLU.autoFight({ targetKey: npcId, fightKind: killorfight, autoSkill: "fast", onFail: function onFail() { setTimeout(function (t) { PLU.loopKillByN(npcId, killN, killorfight); }, 500); }, onEnd: function onEnd() { if (killN <= 1) { PLU.setBtnRed($("#btn_bt_loopKillByN"), 0); $("#btn_bt_loopKillByN").text("计数击杀"); clickButton("home", 1); return; } else { setTimeout(function (t) { PLU.loopKillByN(npcId, killN - 1, killorfight); }, 500); } } }); }, //================================================================================================ toLoopKillName: function toLoopKillName($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) { $("#btn_bt_loopKillName").text("名字连杀"); return; } YFUI.showInput({ title: "名字连杀", text: '格式:次数|人物词组<br>\n 次数:省略则默认1次<br>\n 人物词组:以英文逗号分割多个关键词<br>\n <span style="color:red;">例如:</span><br>\n [例1] <span style="color:blue;">99|铁狼军,银狼军,金狼军,金狼将,十夫长,百夫长,千夫长</span><br>\n [例2] <span style="color:blue;">醉汉,收破烂的</span>;\n ', value: PLU.getCache("lookKillNames") || "299|铁狼军,银狼军,金狼军,金狼将,十夫长,百夫长,千夫长", onOk: function onOk(val) { if (!$.trim(val)) return; var str = $.trim(val), times = 1, names = "", arr = str.split("|"); if (arr.length > 1) { times = Number(arr[0]) || 1; names = arr[1]; } else { names = arr[0]; } PLU.setCache("lookKillNames", str); PLU.loopKillName(names, Number(times)); }, onNo: function onNo() { PLU.setBtnRed($btn, 0); } }); }, //================================================================================================ loopKillName: function loopKillName(names, killN) { if (killN <= 0 || !PLU.ONOFF["btn_bt_loopKillName"]) return; $("#btn_bt_loopKillName").text("停击杀(" + killN + ")"); var npcObj = null, namesArr = names.split(","); for (var i = 0; i < namesArr.length; i++) { npcObj = UTIL.findRoomNpc(namesArr[i], false, true); if (npcObj) break; } if (npcObj) { var needAutoSkill = PLU.getCache("autoPerform") >= 1 ? null : "multi"; PLU.autoFight({ targetKey: npcObj.key, fightKind: "kill", autoSkill: needAutoSkill, onFail: function onFail() { setTimeout(function (t) { PLU.loopKillName(names, killN); }, 1000); }, onEnd: function onEnd() { if (killN <= 1) { PLU.setBtnRed($("#btn_bt_loopKillName"), 0); $("#btn_bt_loopKillName").text("名字连杀"); return; } else { setTimeout(function (t) { PLU.loopKillName(names, killN - 1); }, 1000); } } }); } else { setTimeout(function (t) { PLU.loopKillName(names, killN); }, 2000); } }, //================================================================================================ toLoopKill: function toLoopKill($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) { // $("#btn_bt_kg_loopKill").text('循环杀') return; } YFUI.showInput({ title: "循环杀", text: '格式:名字词组<br>\n 名字词组:以英文逗号分割多个关键词, <b style="color:red;">可模糊匹配!</b><br>\n <span style="color:red;">不需要战斗时建议关闭以节省性能!!</span><br>\n [例1] <span style="color:blue;">铁狼军,银狼军,金狼军,金狼将,十夫长,百夫长,千夫长,蛮荒铁,蛮荒银,蛮荒金,寨近卫,蛮荒近卫</span><br>\n ', type: "textarea", value: PLU.getCache("lookKillKeys") || "怯薛军,蒙古突骑,草原枪骑,重装铁骑,狼军,狼将,夫长,蛮荒,近卫", onOk: function onOk(val) { if (!$.trim(val)) return; var str = $.trim(val), names = str.split(/[,,#]/); PLU.setCache("lookKillKeys", str); PLU.loopKills(str); }, onNo: function onNo() { PLU.setBtnRed($btn, 0); } }); }, //================================================================================================ loopKills: function loopKills(names) { if (!PLU.ONOFF["btn_bt_kg_loopKill"]) return; // $("#btn_bt_kg_loopKill").text('停循环'); var npcObj = null, namesArr = names.split(/[,,#]/); for (var i = 0; i < namesArr.length; i++) { npcObj = UTIL.findRoomNpcReg(namesArr[i]); if (npcObj) break; } if (npcObj) { var needAutoSkill = PLU.getCache("autoPerform") >= 1 ? null : "multi"; PLU.autoFight({ targetKey: npcObj.key, fightKind: "kill", autoSkill: needAutoSkill, onFail: function onFail() { setTimeout(function (t) { PLU.loopKills(names); }, 1000); }, onEnd: function onEnd() { setTimeout(function (t) { PLU.loopKills(names); }, 500); } }); } else { setTimeout(function (t) { PLU.loopKills(names); }, 1000); } }, //================================================================================================ toLoopReadBase: function toLoopReadBase($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) { // $("#btn_bt_loopReadBase").text('读技能书') return; } YFUI.showInput({ title: "读书还神", text: '格式:比试NPC名称|基础秘籍名称<br>\n 比试NPC名称:要比试进行回神的NPC名字<br>\n 基础秘籍名称:基础秘籍名称关键词<br>\n <span style="color:red;">战斗必刷道具栏必须用还神丹</span><br>\n <span style="color:red;">例如:</span><br>\n [例1] <span style="color:blue;">地痞|基本剑法秘籍</span>\n ', value: PLU.getCache("loopReadBase") || "地痞|基本剑法秘籍", onOk: function onOk(val) { if (!$.trim(val)) return; var str = $.trim(val), npcName = "", bookName = "", arr = str.split("|"); if (arr.length > 1) { npcName = arr[0]; bookName = arr[1]; PLU.setCache("loopReadBase", str); PLU.getAllItems(function (list) { var bookItem = list.find(function (it) { return !!it.name.match(bookName); }); var reN = Math.floor(g_obj_map.get("msg_attrs").get("max_shen_value") / 55) || 1; console.log(npcName, bookItem.key, reN); if (bookItem) { PLU.toggleAutoPerform($("#btn_bt_kg_autoPerform"), "autoPerform", 0); PLU.loopReadBase(npcName, bookItem.key, reN); } }); } else { PLU.setBtnRed($btn, 0); return; } }, onNo: function onNo() { PLU.setBtnRed($btn, 0); } }); }, loopReadBase: function loopReadBase(npcName, bookKey, reN) { //你使用了一本 //你的神值不足:10以上。 //你目前不能使用 //使用技能等级为 if (!PLU.ONOFF["btn_bt_loopReadBase"]) { UTIL.delSysListener("listenLoopReadBase"); YFUI.writeToOut("<span style='color:#FFF;'>--读基本技能书停止--</span>"); PLU.setBtnRed($("#btn_bt_loopReadBase"), 0); return; } UTIL.addSysListener("listenLoopReadBase", function (b, type, subtype, msg) { if (type == "main_msg" && msg.indexOf("你使用了一本") >= 0) { UTIL.delSysListener("listenLoopReadBase"); setTimeout(function () { PLU.loopReadBase(npcName, bookKey, reN); }, 500); } else if (type == "notice" && msg.indexOf("你的神值不足") >= 0) { UTIL.delSysListener("listenLoopReadBase"); setTimeout(function () { var refreshNumber = 0; PLU.autoFight({ targetName: npcName, fightKind: "fight", autoSkill: "item", onStart: function onStart() { console.log("start fight=="); }, onFighting: function onFighting(ps) { if (refreshNumber >= reN) return true; if (ps && ps.key == "playskill 7") { refreshNumber++; console.log(ps.key, refreshNumber, reN); if (refreshNumber >= reN) { PLU.autoEscape({}); } } }, onFail: function onFail(err) { console.log(err); setTimeout(function () { PLU.loopReadBase(npcName, bookKey, reN); }, 1000); }, onEnd: function onEnd(e) { setTimeout(function () { PLU.loopReadBase(npcName, bookKey, reN); }, 1000); } }); }, 500); } else if (type == "notice" && msg.indexOf("使用技能等级为") >= 0) { UTIL.delSysListener("listenLoopReadBase"); YFUI.writeToOut("<span style='color:#FFF;'>--读基本技能书结束--</span>"); PLU.setBtnRed($("#btn_bt_loopReadBase"), 0); } else if (type == "notice" && msg.indexOf("你的背包里没有这个物品") >= 0) { YFUI.writeToOut("<span style='color:#FFF;'>--读基本技能书停止--</span>"); PLU.setBtnRed($("#btn_bt_loopReadBase"), 0); } return; }); var cmds = "items use " + bookKey; PLU.execActions(cmds); }, //================================================================================================ toSearchFamilyQS: function toSearchFamilyQS($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) return; YFUI.showInput({ title: "搜索师门任务", text: '格式:任务包含的关键字,多个以英文逗号分隔<br>\n <span style="color:red;">例如:</span><br>\n [例1] <span style="color:blue;">硫磺,黝黑山洞</span>\n [例2] <span style="color:blue;">茅山,</span>\n ', value: PLU.getCache("searchFamilyQS") || "硫磺,黝黑山洞", onOk: function onOk(val) { if (!$.trim(val)) return; var str = $.trim(val), arr = str.split(","); if (arr.length > 1) { var _g_obj_map; PLU.setCache("searchFamilyQS", str); clickButton("family_quest", 0); PLU.TMP.master = (_g_obj_map = g_obj_map) === null || _g_obj_map === void 0 || (_g_obj_map = _g_obj_map.get("msg_attrs")) === null || _g_obj_map === void 0 ? void 0 : _g_obj_map.get("master_name"); PLU.loopSearchFamilyQS(arr); } else { PLU.setBtnRed($btn, 0); return; } }, onNo: function onNo() { PLU.setBtnRed($btn, 0); } }); }, loopSearchFamilyQS: function loopSearchFamilyQS(keys, cmd) { if (!PLU.ONOFF["btn_bt_searchFamilyQS"]) { UTIL.delSysListener("listenLoopSearchFamilyQS"); YFUI.writeToOut("<span style='color:#FFF;'>--停止搜索--</span>"); PLU.setBtnRed($("#btn_bt_searchFamilyQS"), 0); return; } UTIL.addSysListener("listenLoopSearchFamilyQS", function (b, type, subtype, msg) { if (type == "main_msg") { if (msg.indexOf("".concat(PLU.TMP.master, "一拂袖")) >= 0 || msg.indexOf("你现在没有师门任务。") >= 0) { UTIL.delSysListener("listenLoopSearchFamilyQS"); setTimeout(function () { PLU.loopSearchFamilyQS(keys); }, 250); } else if (msg.indexOf("你现在的任务是") >= 0 || msg.indexOf(PLU.TMP.master) >= 0) { UTIL.delSysListener("listenLoopSearchFamilyQS"); var qsStr = msg.replace(/\x03(0)?|href;0;|[\033|\27|\0x1b]\[[0-9|;]+m/gi, ""); for (var i = 0; i < keys.length; i++) { var key = $.trim(keys[i]); if (key && qsStr.indexOf(key) >= 0) { YFUI.writeToOut("<span style='color:#FF0;'>========= 结束搜索 =========</span>"); delete PLU.TMP.master; PLU.setBtnRed($("#btn_bt_searchFamilyQS"), 0); break; } else { setTimeout(function () { PLU.loopSearchFamilyQS(keys, "family_quest cancel go"); }, 250); } } } } }); if (cmd) clickButton(cmd); else clickButton("family_quest", 0); }, //================================================================================================ toSearchBangQS: function toSearchBangQS($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) return; YFUI.showInput({ title: "搜索帮派任务", text: '格式:任务包含的关键字,多个以英文逗号分隔<br>\n <span style="color:red;">例如:</span><br>\n [例1] <span style="color:blue;">硫磺,黝黑山洞</span>\n ', value: PLU.getCache("searchBangQS") || "硫磺,黝黑山洞", onOk: function onOk(val) { if (!$.trim(val)) return; var str = $.trim(val), arr = str.split(","); if (arr.length > 1) { PLU.setCache("searchBangQS", str); clickButton("clan scene", 0); PLU.loopSearchBangQS(arr); } else { PLU.setBtnRed($btn, 0); return; } }, onNo: function onNo() { PLU.setBtnRed($btn, 0); } }); }, loopSearchBangQS: function loopSearchBangQS(keys, cmd) { if (!PLU.ONOFF["btn_bt_searchBangQS"]) { UTIL.delSysListener("listenLoopSearchBangQS"); YFUI.writeToOut("<span style='color:#FFF;'>--停止搜索--</span>"); PLU.setBtnRed($("#btn_bt_searchBangQS"), 0); return; } UTIL.addSysListener("listenLoopSearchBangQS", function (b, type, subtype, msg) { if (type == "main_msg") { if (msg.indexOf("帮派使者一拂袖") >= 0 || msg.indexOf("帮派使者:现在没有任务") >= 0) { UTIL.delSysListener("listenLoopSearchBangQS"); setTimeout(function () { PLU.loopSearchBangQS(keys); }, 250); } else if (msg.indexOf("你现在的任务是") >= 0 || msg.indexOf("帮派使者:") >= 0) { UTIL.delSysListener("listenLoopSearchBangQS"); var qsStr = msg.replace(/\x03(0)?|href;0;|[\033|\27|\0x1b]\[[0-9|;]+m/gi, ""); for (var i = 0; i < keys.length; i++) { var key = $.trim(keys[i]); if (key && qsStr.indexOf(key) >= 0) { YFUI.writeToOut("<span style='color:#FF0;'>========= 结束搜索 =========</span>"); PLU.setBtnRed($("#btn_bt_searchBangQS"), 0); break; } else { setTimeout(function () { PLU.loopSearchBangQS(keys, "clan cancel_task go"); }, 250); } } } } }); if (cmd) clickButton(cmd); else clickButton("clan task", 0); }, //================================================================================================ toLoopClick: function toLoopClick($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) { $("#btn_bt_loopClick").text("自动点击"); return; } YFUI.showInput({ title: "自动点击", text: "输入自动点击的次数,确定后点击要点按钮", value: PLU.getCache("autoClickNum") || 20, onOk: function onOk(val) { if (!Number(val)) return; setTimeout(function (o) { $(document).one("click", function (o) { var snpc = $(o.target).closest("button")[0].outerHTML.match(/clickButton\([\'\"](.+)[\'\"](,\s*(\d+))*\)/i); if (snpc && snpc.length >= 2) { var _snpc$; var param = (_snpc$ = snpc[3]) !== null && _snpc$ !== void 0 ? _snpc$ : 0; PLU.setCache("autoClickNum", Number(val)); PLU.loopClick(snpc[1], param, Number(val)); } else { PLU.setBtnRed($btn, 0); } }); }, 500); }, onNo: function onNo() { PLU.setBtnRed($btn, 0); } }); }, //================================================================================================ loopClick: function loopClick(btnCmd, param, clickNum) { if (!clickNum || clickNum < 1 || !PLU.ONOFF["btn_bt_loopClick"]) { PLU.setBtnRed($("#btn_bt_loopClick"), 0); $("#btn_bt_loopClick").text("连续点击"); return; } $("#btn_bt_loopClick").text("停点击(" + clickNum + ")"); clickButton(btnCmd, param); clickNum--; setTimeout(function () { PLU.loopClick(btnCmd, param, clickNum); }, 250); }, //================================================================================================ loopSlowClick: function loopSlowClick(btnCmd, param, clickNum, delay) { if (!delay) delay = 1000; if (!clickNum || clickNum < 1 || !PLU.ONOFF["btn_bt_loopSlowClick"]) { PLU.setBtnRed($("#btn_bt_loopSlowClick"), 0); $("#btn_bt_loopSlowClick").text("慢速点击"); return; } $("#btn_bt_loopSlowClick").text("停(" + clickNum + ")"); clickButton(btnCmd, param); clickNum--; setTimeout(function () { PLU.loopSlowClick(btnCmd, param, clickNum, delay); }, delay); }, //================================================================================================ toLoopSlowClick: function toLoopSlowClick($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) { $("#btn_bt_loopSlowClick").text("自动点击"); return; } YFUI.showPop({ title: "自动点击", text: '输入自动点击的次数,输入点击速度,确定后点击游戏中要点的按钮<br>\n <div style=\'margin:10px 0;\'>\n <span>速度(几秒一次): </span>\n <input id="slowClickSec" value="0.5" style="font-size:16px;height:30px;width:15%;"></input>\n <span>次数: </span>\n <input id="slowClickTimes" value="'.concat(PLU.getCache("autoClickNum") || 20, '" style="font-size:16px;height:26px;width:40%;"></input>\n </div>'), onOk: function onOk() { var times = Number($("#slowClickTimes").val()), delay = Number($("#slowClickSec").val()); if (Number(times) <= 0 || Number(delay) <= 0) return; setTimeout(function (o) { $(document).one("click", function (o) { var snpc = $(o.target).closest("button")[0].outerHTML.match(/clickButton\([\'\"](.+)[\'\"](,\s*(\d+))*\)/i); if (snpc && snpc.length >= 2) { var _snpc$2; var param = (_snpc$2 = snpc[3]) !== null && _snpc$2 !== void 0 ? _snpc$2 : 0; PLU.setCache("autoClickNum", times); PLU.loopSlowClick(snpc[1], param, times, delay * 1000); } else { PLU.setBtnRed($btn, 0); } }); }, 500); }, onNo: function onNo() { PLU.setBtnRed($btn, 0); } }); }, toRecord: function toRecord($btn) { var btnFlag = PLU.setBtnRed($btn); if (btnFlag) { PLU.TMP.cmds = []; $("#btn_record").text("停止录制"); return; } var cmds = PLU.TMP.cmds; delete PLU.TMP.cmds; // 指令壓縮算法 var count = 1; for (var index = 0; index < cmds.length; index++) { if (cmds[index] == cmds[index + 1]) { count++; continue; } if (count >= 2 + cmds[index].length == 1) { index -= count - 1; cmds.splice(index, count, "#" + count + " " + cmds[index]); } count = 1; } cmds = cmds.map(function (e) { var res = e.match(/#\d+ ((jh|fb) \d+)/); return res ? res[1] : e; }).join(";"); YFUI.showPop({ title: "指令详情", text: cmds, okText: "复制", onOk: function onOk() { if (GM_setClipboard) GM_setClipboard(cmds); else YFUI.writeToOut("<span>权限不足!</span>"); $("#btn_record").text("指令录制"); } }); }, //================================================================================================ autoMasterGem: function autoMasterGem($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) { $("#btn_bt_autoMasterGem").text("一键合天神"); return; } var arr = ["碎裂的", "裂开的", "无前缀", "无暇的", "完美的", "君王的", "皇帝的"]; var sel1 = '<select id="startGemLvl" style="font-size:16px;height:30px;width:25%;">'; arr.forEach(function (p, pi) { sel1 += '<option value="' + pi + '" ' + (pi == 0 ? "selected" : "") + ">" + p + "</option>"; }); sel1 += "</select>"; YFUI.showPop({ title: "一键合天神", text: "选择合成起始宝石等级,选择速度(请根据网速和游戏速度选择),确定后自动向上合成所有<br>\n <div style='margin:10px 0;'>\n <span>起始等级: </span>".concat(sel1, '\n <span>速度(秒): </span>\n <select id="combineSec" style="font-size:16px;height:30px;width:15%;">\n <option selected>0.5</option>\n <option>1</option>\n <option>2</option>\n <option>3</option>\n </select>\n </div>'), width: "382px", okText: "开始", onOk: function onOk() { var startLvl = Number($("#startGemLvl").val()), delay = Number($("#combineSec").val()); PLU.autoCombineMasterGem(startLvl, delay * 1000); }, onNo: function onNo() { PLU.setBtnRed($btn, 0); } }); }, autoCombineMasterGem: function autoCombineMasterGem(startLvl, delay, gemCode, count) { if (!PLU.ONOFF["btn_bt_autoMasterGem"]) { PLU.setBtnRed($("#btn_bt_autoMasterGem"), 0); $("#btn_bt_autoMasterGem").text("一键合天神"); YFUI.writeToOut("<span style='color:white;'>==停止合成宝石!==</span>"); return; } if (!UTIL.sysListeners["listenCombineMasterGem"]) { UTIL.addSysListener("listenCombineMasterGem", function (b, type, subtype, msg) { if (type == "notice" && msg.indexOf("合成宝石需要") >= 0) { UTIL.delSysListener("listenCombineMasterGem"); YFUI.writeToOut("<span style='color:#F00;'>--缺少银两, 合成结束--</span>"); PLU.setBtnRed($("#btn_bt_autoMasterGem"), 0); } return; }); } //合成宝石需要5万银两。 //没有这么多的完美的蓝宝石 if (!gemCode || count < 3) { PLU.getGemList(function (gemList) { // console.log(gemList) var g = gemList.find(function (e) { return e.key.indexOf("" + (startLvl + 1)) > 0 && e.num >= 3; }); if (g) { PLU.autoCombineMasterGem(startLvl, delay, g.key, g.num); } else { if (startLvl < 6) PLU.autoCombineMasterGem(startLvl + 1, delay); else { PLU.setBtnRed($("#btn_bt_autoMasterGem"), 0); YFUI.writeToOut("<span style='color:white;'>==合成宝石结束!==</span>"); } } }); } else { var cd = delay / 4 | 250, n = 1; cd = cd > 250 ? cd : 250; if (count >= 30000) { n = 10000; cd = delay; } else if (count >= 15000) { n = 5000; cd = delay; } else if (count >= 9000) { n = 3000; cd = delay; } else if (count >= 3000) { n = 1000; cd = delay; } else if (count >= 300) { n = 100; cd = delay; } else if (count >= 150) { n = 50; cd = delay; } else if (count >= 90) { n = 30; cd = delay / 2 | 0; } else if (count >= 30) { n = 10; cd = delay / 3 | 0; } var cmd = "items hecheng " + gemCode + "_N_" + n + ""; clickButton(cmd); setTimeout(function () { PLU.autoCombineMasterGem(startLvl, delay, gemCode, count - n * 3); }, cd); } }, //================================================================================================ toSellLaji: function toSellLaji($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) { //$("#btn_bt_sellLaji").text('清理垃圾') return; } var defaultList = "破烂衣服,水草,木盾,铁盾,藤甲盾,青铜盾,鞶革,军袍,麻带,破披风,长斗篷,牛皮带,锦缎腰带,丝质披风,逆钩匕,匕首,铁甲,重甲,精铁甲,逆钩匕,银丝甲,梅花匕,软甲衣,羊角匕,金刚杖,白蟒鞭,天寒项链,天寒手镯,新月棍,天寒戒,天寒帽,天寒鞋,金弹子,拜月掌套,斩空刀,飞羽剑,七星宝戒,迷幻经纶,长剑,鹿皮小靴,铁手镯,银手镯,丝绸马褂,钢剑,布鞋,布衣,铁项链,银项链,单刀,丝绸衣,竹剑,松子,黑棋子,白棋子,沉虹刀,丝衣,木棍,钢刀,铁戒,银戒,船篙"; YFUI.showInput({ title: "清理垃圾", text: '格式:物品词组<br>\n 物品词组:以英文逗号分割多个关键词<br>\n <span style="color:red;">例如:</span><br>\n [例1] <span style="color:blue;">'.concat(defaultList, "</span><br>\n "), value: PLU.getCache("sellItemNames") || defaultList, type: "textarea", onOk: function onOk(val) { if (!$.trim(val)) return; var str = $.trim(val); PLU.setCache("sellItemNames", str); var keysList = str.split(","); var itemsTimeOut = setTimeout(function () { UTIL.delSysListener("listItems"); }, 5000); UTIL.addSysListener("listItems", function (b, type, subtype, msg) { if (type != "items") return; UTIL.delSysListener("listItems"); clearTimeout(itemsTimeOut); clickButton("prev"); var iId = 1, itemList = []; while (b.get("items" + iId)) { var it = UTIL.filterMsg(b.get("items" + iId)).split(","); if (it && it.length > 4 && it[3] == "0" && keysList.includes(it[1])) itemList.push({ key: it[0], name: it[1], num: Number(it[2]) }); iId++; } PLU.loopSellItems(itemList); }); clickButton("items", 0); }, onNo: function onNo() { PLU.setBtnRed($btn, 0); } }); }, //================================================================================================ loopSellItems: function loopSellItems(itemList) { if (itemList.length <= 0) { PLU.setBtnRed($("#btn_bt_sellLaji"), 0); return YFUI.writeToOut("<span style='color:#F66;'>--无出售物件!--</span>"); } var ac = []; itemList.forEach(function (it) { var ct = it.num; while (ct > 0) { if (ct >= 10000) { ac.push("items sell " + it.key + "_N_10000"); ct -= 10000; } else if (ct >= 1000) { ac.push("items sell " + it.key + "_N_1000"); ct -= 1000; } else if (ct >= 100) { ac.push("items sell " + it.key + "_N_100"); ct -= 100; } else if (ct >= 50) { ac.push("items sell " + it.key + "_N_50"); ct -= 50; } else if (ct >= 10) { ac.push("items sell " + it.key + "_N_10"); ct -= 10; } else { ac.push("items sell " + it.key + ""); ct -= 1; } } }); var acs = ac.join(";"); PLU.fastExec(acs, function () { PLU.setBtnRed($("#btn_bt_sellLaji"), 0); YFUI.writeToOut("<span style='color:white;'>==出售完成!==</span>"); }); }, //================================================================================================ toSplitItem: function toSplitItem($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) return; var defaultList = "玄武盾,破军盾,金丝宝甲衣,夜行披风,羊毛斗篷,残雪戒,残雪项链,残雪手镯,残雪鞋,金丝甲,宝玉甲,月光宝甲,虎皮腰带,沧海护腰,红光匕,毒龙鞭,玉清棍,霹雳掌套,血屠刀,生死符,残雪帽,星河剑,疯魔杖,天寒匕,无心匕,明月戒,明月鞋,明月帽,明月手镯,明月项链,软猬甲,月光宝甲衣,扬文,碧磷鞭,倚天剑,屠龙刀"; YFUI.showInput({ title: "分解装备", text: '格式:物品词组<br>\n 物品词组:以英文逗号分割多个关键词<br>\n <span style="color:red;">例如:</span><br>\n [例1] <span style="color:blue;">'.concat(defaultList, "</span><br>\n "), value: PLU.getCache("splitItemNames") || defaultList, type: "textarea", onOk: function onOk(val) { if (!$.trim(val)) return; var str = $.trim(val); PLU.setCache("splitItemNames", str); var keysList = str.split(","); var itemsTimeOut = setTimeout(function () { UTIL.delSysListener("listItems_si"); }, 5000); UTIL.addSysListener("listItems_si", function (b, type, subtype, msg) { if (type != "items") return; UTIL.delSysListener("listItems_si"); clearTimeout(itemsTimeOut); clickButton("prev"); var iId = 1, itemList = []; while (b.get("items" + iId)) { var it = UTIL.filterMsg(b.get("items" + iId)).split(","); if (it && it.length > 4 && it[3] == "0" && keysList.includes(it[1])) itemList.push({ key: it[0], name: it[1], num: Number(it[2]) }); iId++; } PLU.loopSplitItem(itemList); }); clickButton("items", 0); }, onNo: function onNo() { PLU.setBtnRed($btn, 0); } }); }, //================================================================================================ loopSplitItem: function loopSplitItem(itemList) { if (itemList.length <= 0) { PLU.setBtnRed($("#btn_bt_splitItem"), 0); return YFUI.writeToOut("<span style='color:#F66;'>--无分解物件!--</span>"); } var ac = []; itemList.forEach(function (it) { var ct = it.num; while (ct > 0) { if (ct >= 100) { ac.push("items splite " + it.key + "_N_100"); ct -= 100; } else if (ct >= 50) { ac.push("items splite " + it.key + "_N_50"); ct -= 50; } else if (ct >= 10) { ac.push("items splite " + it.key + "_N_10"); ct -= 10; } else { ac.push("items splite " + it.key + ""); ct -= 1; } } }); var acs = ac.join(";"); PLU.fastExec(acs, function () { PLU.setBtnRed($("#btn_bt_splitItem"), 0); YFUI.writeToOut("<span style='color:white;'>==分解完成!==</span>"); }); }, //================================================================================================ toPutStore: function toPutStore($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) return; var defaultList = "树枝,碎片,璞玉,青玉,墨玉,白玉,秘籍木盒,锦袋,瑞雪针扣,武穆遗书,隐武竹笺,空识卷轴,技能书,开元宝票,霹雳弹,舞鸢尾,百宜雪梅,宝石,宝箱,技能天书,钥匙,玄重铁,武林至高绝学残页,九转,采掘许可,提速卡,采掘许可,礼券"; YFUI.showInput({ title: "物品入库", text: '格式:物品词组<br>\n 物品词组:以英文逗号分割多个关键词<br>\n <span style="color:red;">例如:</span><br>\n [例1] <span style="color:blue;">'.concat(defaultList, "</span><br>\n "), value: PLU.getCache("putStoreNames") || defaultList, type: "textarea", onOk: function onOk(val) { if (!$.trim(val)) return; var str = $.trim(val); PLU.setCache("putStoreNames", str); var keysList = str.split(",").join("|"); var itemsTimeOut = setTimeout(function () { UTIL.delSysListener("listItems_ps"); }, 5000); UTIL.addSysListener("listItems_ps", function (b, type, subtype, msg) { if (type != "items") return; UTIL.delSysListener("listItems_ps"); clearTimeout(itemsTimeOut); clickButton("prev"); var iId = 1, itemList = []; while (b.get("items" + iId)) { var it = UTIL.filterMsg(b.get("items" + iId)).split(","); if (it && it.length > 4 && it[3] == "0" && it[1].match(keysList) && it[1] != "青龙碎片" && it[1] != "玄铁碎片") itemList.push({ key: it[0], name: it[1], num: Number(it[2]) }); iId++; } PLU.loopPutStore(itemList); }); clickButton("items", 0); }, onNo: function onNo() { PLU.setBtnRed($btn, 0); } }); }, //================================================================================================ loopPutStore: function loopPutStore(itemList) { if (itemList.length <= 0) { PLU.setBtnRed($("#btn_bt_putStore"), 0); return YFUI.writeToOut("<span style='color:#F66;'>--无物件入库!--</span>"); } var ac = []; itemList.forEach(function (it) { ac.push("items put_store " + it.key + ""); }); PLU.fastExec(ac.join(";"), function () { PLU.setBtnRed($("#btn_bt_putStore"), 0); YFUI.writeToOut("<span style='color:white;'>==入库完成!==</span>"); }); }, //================================================================================================ toAutoUse: function toAutoUse($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) return; var defaultList = "*神秘宝箱,灵草,紫芝,狂暴丹,小还丹,大还丹,高级大还丹,高级狂暴丹,高级乾坤再造丹,百年灵草,百年紫芝,特级大还丹,特级狂暴丹,特级乾坤再造丹,千年灵草,千年紫芝,顶级大还丹,顶级狂暴补丸,顶级乾坤补丸,万年灵草,万年紫芝"; YFUI.showInput({ title: "物品使用", text: '格式:物品词组<br>\n 物品词组:以英文逗号分割多个关键词, 只能单个使用的物品前面加*星号<br>\n <span style="color:red;">例如:</span><br>\n [例1] <span style="color:blue;">'.concat(defaultList, "</span><br>\n "), value: PLU.getCache("autoUseNames") || defaultList, type: "textarea", onOk: function onOk(val) { if (!$.trim(val)) return; var str = $.trim(val); PLU.setCache("autoUseNames", str); var keysList = str.split(","); var itemsTimeOut = setTimeout(function () { UTIL.delSysListener("listItems_au"); }, 5000); UTIL.addSysListener("listItems_au", function (b, type, subtype, msg) { if (type != "items") return; UTIL.delSysListener("listItems_au"); clearTimeout(itemsTimeOut); clickButton("prev"); var iId = 1, itemList = []; while (b.get("items" + iId)) { var it = UTIL.filterMsg(b.get("items" + iId)).split(","); if (!it[1]) continue; if (it && it.length > 4 && it[3] == "0") { if (keysList.includes(it[1])) itemList.push({ key: it[0], name: it[1], num: Number(it[2]), multi: true }); else if (keysList.includes("*" + it[1])) itemList.push({ key: it[0], name: it[1], num: Number(it[2]), multi: false }); } iId++; } PLU.loopAutoUse(itemList); }); clickButton("items", 0); }, onNo: function onNo() { PLU.setBtnRed($btn, 0); } }); }, //================================================================================================ loopAutoUse: function loopAutoUse(itemList) { if (itemList.length <= 0) { PLU.setBtnRed($("#btn_bt_autoUse"), 0); return YFUI.writeToOut("<span style='color:#F66;'>--无物件使用!--</span>"); } var ac = []; itemList.forEach(function (it) { var ct = it.num; while (ct > 0) { if (it.multi && ct >= 100) { ac.push("items use " + it.key + "_N_100"); ct -= 100; } else if (it.multi && ct >= 50) { ac.push("items use " + it.key + "_N_50"); ct -= 50; } else if (it.multi && ct >= 10) { ac.push("items use " + it.key + "_N_10"); ct -= 10; } else { ac.push("items use " + it.key + ""); ct -= 1; } } }); PLU.fastExec(ac.join(";"), function () { PLU.setBtnRed($("#btn_bt_autoUse"), 0); YFUI.writeToOut("<span style='color:white;'>==使用完成!==</span>"); }); }, //================================================================================================ toLoopScript: function toLoopScript($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) { $("#btn_bt_loopScript").text("循环执行"); PLU.STO.loopScTo && clearTimeout(PLU.STO.loopScTo) && delete PLU.STO.loopScTo; return; } YFUI.showInput({ title: "循环执行", text: '格式:循环次数@时间间隔|执行指令<br>\n 循环次数:省略则默认1次<br>\n 时间间隔:省略则默认5(5秒)<br>\n 执行指令:以分号分隔的指令<br>\n <span style="color:red;">例如</span><br>\n [例1] 3@5|jh 1;e;n;home;<br>\n [例2] jh 5;n;n;n;w;sign7;\n ', value: PLU.getCache("loopScript") || "home;", type: "textarea", onOk: function onOk(val) { if (!$.trim(val)) return; var str = $.trim(val), scripts = "", times = 1, interval = 5, arr = str.split("|"); if (arr.length > 1) { scripts = arr[1]; if (arr[0].indexOf("@") >= 0) { times = Number(arr[0].split("@")[0]) || 1; interval = Number(arr[0].split("@")[1]) || 5; } else { times = Number(arr[0]) || 1; } } else { scripts = arr[0]; } PLU.setCache("loopScript", str); PLU.loopScript(scripts, times, interval); }, onNo: function onNo() { PLU.setBtnRed($btn, 0); } }); }, //================================================================================================ loopScript: function loopScript(scripts, times, interval) { times--; $("#btn_bt_loopScript").text("停执行(" + times + ")"); PLU.execActions(scripts, function () { if (times <= 0 || !PLU.ONOFF["btn_bt_loopScript"]) { PLU.setBtnRed($("#btn_bt_loopScript"), 0); $("#btn_bt_loopScript").text("循环执行"); PLU.STO.loopScTo && clearTimeout(PLU.STO.loopScTo) && delete PLU.STO.loopScTo; return; } else { PLU.STO.loopScTo = setTimeout(function () { PLU.loopScript(scripts, times, interval); }, interval * 1000); } }); }, //================================================================================================ toAutoAskQixia: function toAutoAskQixia($btn, autoTime) { if (g_gmain.is_fighting) return; var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) return; $(".menu").hide(); clickButton("open jhqx", 0); YFUI.showPop({ title: "自动访问奇侠", text: "自动对话所有有亲密度的奇侠<br>请在做完20次赞助金锭后再进行<br><b style='color:#F00;'>是否现在进行?</b>", autoOk: autoTime !== null && autoTime !== void 0 ? autoTime : null, onOk: function onOk() { var jhqxTimeOut = setTimeout(function () { UTIL.delSysListener("listQixia"); PLU.setBtnRed($btn, 0); }, 5000); UTIL.addSysListener("listQixia", function (b, type, subtype, msg) { if (type != "show_html_page" || msg.indexOf("江湖奇侠成长信息") < 0) return; UTIL.delSysListener("listQixia"); clearTimeout(jhqxTimeOut); var listHtml = msg; clickButton("prev"); var str = "find_task_road qixia (\\d+)\x03(.{2,4})\x030\x03\\((\\d+)\\)(.{15,25}朱果)?.{30,50}(已出师|未出世)", //let str = "find_task_road qixia (\\d+)\x03(.{2,4})\x030\x03\\((\\d+)\\)(.{15,25}朱果?.{30,50}已出师)", rg1 = new RegExp(str, "g"), rg2 = new RegExp(str), visQxs = []; listHtml.match(rg1).forEach(function (e) { var a = e.match(rg2); if (a) visQxs.push({ key: a[1], name: a[2], num: Number(a[3]), link: "find_task_road qixia " + a[1], fast: a[4] ? "open jhqx " + a[1] : null }); }); visQxs = visQxs.sort(function (a, b) { if (a.fast && b.num >= 25000) return -1; else return 2; }); visQxs.reverse(); PLU.toAskQixia(visQxs, 0); }); clickButton("open jhqx", 0); }, onNo: function onNo() { PLU.setBtnRed($btn, 0); } }); }, //================================================================================================ toAskQixia: function toAskQixia(qxList, idx) { clickButton("home"); if (idx >= qxList.length || !PLU.ONOFF["btn_bt_autoAskQixia"]) { PLU.setBtnRed($("#btn_bt_autoAskQixia"), 0); YFUI.writeToOut("<span style='color:#FFF;'>--奇侠访问结束!--</span>"); YFUI.writeToOut("<span style='color:yellow;'> 今日一共获得玄铁令x" + PLU.TMP.todayGetXT + "</span>"); UTIL.log({ msg: " 今日一共获得玄铁令x " + PLU.TMP.todayGetXT + " ", type: "TIPS", time: new Date().getTime() }); return; } var qxObj = qxList[idx]; if (qxObj.fast) { clickButton(qxObj.fast, 0); setTimeout(function () { PLU.toAskQixia(qxList, idx + 1); }, 500); } else { PLU.execActions(qxObj.link + ";golook_room;", function () { var objNpc = UTIL.findRoomNpc(qxObj.name, false, true); if (objNpc) { PLU.execActions("ask " + objNpc.key + ";ask " + objNpc.key + ";ask " + objNpc.key + ";ask " + objNpc.key + ";ask " + objNpc.key + ";golook_room;", function () { setTimeout(function () { PLU.toAskQixia(qxList, idx + 1); }, 500); }); } else { YFUI.writeToOut("<span style='color:#FFF;'>--找不到奇侠:" + qxObj.name + "--</span>"); setTimeout(function () { PLU.toAskQixia(qxList, idx + 1); }, 500); } }); } }, //================================================================================================ getQixiaList: function getQixiaList(callback) { var jhQixiaTimeOut = setTimeout(function () { UTIL.delSysListener("getlistQixia"); }, 5000); UTIL.addSysListener("getlistQixia", function (b, type, subtype, msg) { if (type != "show_html_page" || msg.indexOf("江湖奇侠成长信息") < 0) return; UTIL.delSysListener("getlistQixia"); clearTimeout(jhQixiaTimeOut); unsafeWindow.ttttt = msg; var listHtml = msg.replace(/\x03(0)?|href;0;|[\033|\27|\0x1b]\[[0-9|;]+m/gi, ""); clickButton("prev"); var str = "find_task_road qixia (\\d+)(.{2,4})(\\((\\d*)\\))?(open jhqx \\d+朱果)?<\\/td><td.{20,35}>(.{1,10})<\\/td><td.{20,35}>(.{1,15})<\\/td><td .{20,40}领悟(.{2,10})<\\/td><\\/tr>"; var rg1 = new RegExp(str, "g"), rg2 = new RegExp(str), qxList = []; listHtml.match(rg1).forEach(function (e) { var a = e.match(rg2); if (a) qxList.push({ index: a[1], name: a[2], num: Number(a[4]) || 0, link: "find_task_road qixia " + a[1], fast: a[5] ? "open jhqx " + a[1] : null, inJh: a[6] && a[6].indexOf("未出世") < 0 ? true : false }); }); callback && callback(qxList); }); clickButton("open jhqx", 0); }, //================================================================================================ toAutoVisitQixia: function toAutoVisitQixia($btn) { if (g_gmain.is_fighting) return; var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) { //$("#btn_bt_autoVisitQixia").text('亲近奇侠') PLU.TMP.autoQixiaMijing = false; return; } $(".menu").hide(); clickButton("open jhqx", 0); YFUI.showInput({ title: "奇侠秘境", text: '请输入要提升亲密度的游侠的姓名<br>\n 格式:金锭数量|游侠姓名@目标友好度<br>\n 金锭数量:给予1或5或15金锭,可省略则只对话<br>\n 游侠姓名:只能输入一个游侠姓名<br>\n 目标友好度:省略则以可学技能的友好度为目标<br>\n <span style="color:red;">例如</span><br>\n [例1] 15|风无痕 <span style="color:blue;">访问风无痕赠与15金锭</span><br>\n [例2] 火云邪神 <span style="color:blue;">访问火云邪神对话</span><br>\n [例2] 15|步惊鸿@30000 <span style="color:blue;">访问步惊鸿对话赠与15金锭到30000友好度</span><br>\n ' + '<div style="text-align:right;"><label>自动挖宝:<input type="checkbox" id="to_if_auwb" name="awb" value="1"/></label><label>不要扫荡秘境:<input type="checkbox" id="if_auto_mj" name="noamj" value="1"/></label></div>', value: PLU.getCache("visitQixiaName") || "15|风无痕@40000", onOk: function onOk(val) { if (!$.trim(val)) return; var str = $.trim(val), arr = str.split("|"), giveNum = 15, qxName = "", objectFN = 0; var ifAutoMj = $("#if_auto_mj").is(":checked"); var ifAutoWb = $("#if_auto_wb").is(":checked"); if (arr.length > 1) { giveNum = Number(arr[0]) || 15; var nn = arr[1].split("@"); qxName = nn[0].trim(); if (nn.length > 1) objectFN = Number(nn[1]); } else { giveNum = 0; var _nn = arr[0].split("@"); qxName = _nn[0].trim(); if (_nn.length > 1) objectFN = Number(_nn[1]); } PLU.setCache("visitQixiaName", str); PLU.TMP.todayGetXT = 0; UTIL.delSysListener("listenVisitNotice"); PLU.STO.listenVisit && clearTimeout(PLU.STO.listenVisit); PLU.TMP.goingQixiaMijing = false; PLU.tryVisitQixia(qxName, giveNum, objectFN, ifAutoMj, ifAutoWb, function (err) { if (err) { if (err.code == 1) { PLU.setBtnRed($btn, 0); UTIL.delSysListener("listenVisitNotice"); PLU.toAutoAskQixia($("#btn_bt_autoAskQixia"), 10); YFUI.writeToOut("<span style='color:yellow;'> 今日一共获得玄铁令x" + PLU.TMP.todayGetXT + "</span>"); UTIL.log({ msg: " 今日一共获得玄铁令x " + PLU.TMP.todayGetXT + " ", type: "TIPS", time: new Date().getTime() }); } else { YFUI.showPop({ title: "提示", text: "<b style='color:#F00;'>" + err.msg + "</b>", onOk: function onOk() { PLU.setBtnRed($btn, 0); PLU.toAutoVisitQixia($btn); }, onX: function onX() { PLU.setBtnRed($btn, 0); } }); } } }); }, onNo: function onNo() { PLU.setBtnRed($btn, 0); }, onX: function onX() { PLU.setBtnRed($btn, 0); } }); }, //================================================================================================ tryVisitQixia: function tryVisitQixia(qxName, giveNum, objectFN, ifAutoMj, ifAutoWb, callback) { PLU.TMP.autoQixiaMijing = true; //发现 PLU.getQixiaList(function (qxlist) { var testDone = qxlist.find(function (e) { return !!e.fast; }); if (testDone) { PLU.STO.listenVisit && clearTimeout(PLU.STO.listenVisit); callback && callback({ code: 1, msg: "今日奇侠友好度操作已经完毕" }); return; } var qx = qxlist.find(function (e) { return e.name == qxName; }); if (!qx) { callback && callback({ code: 2, msg: "没有这个奇侠!" }); return; } if (!qx.inJh) { callback && callback({ code: 3, msg: "这个奇侠还没出师!" }); return; } var objectFriendNum = objectFN !== null && objectFN !== void 0 ? objectFN : PLU.YFD.qixiaFriend.find(function (e) { return e.name == qxName; }).skillFN; if (qx.num >= objectFriendNum) { callback && callback({ code: 4, msg: "奇侠友好度已足够" }); return; } var listenVisitTimeout = function listenVisitTimeout() { if (!PLU.TMP.goingQixiaMijing) PLU.tryVisitQixia(qxName, giveNum, objectFN, ifAutoMj, ifAutoWb, callback); }; UTIL.delSysListener("listenVisitNotice"); //监听场景消息 UTIL.addSysListener("listenVisitNotice", function (b, type, subtype, msg) { if (type != "notice" && type != "main_msg") return; var msgTxt = UTIL.filterMsg(msg); if (msgTxt.match("对你悄声道:你现在去")) { //奇侠说秘境 var l = msgTxt.match(/(.*)对你悄声道:你现在去(.*),应当会有发现/); if (l && l.length > 2) { PLU.TMP.goingQixiaMijing = true; var placeData = PLU.YFD.mjList.find(function (e) { return e.n == l[2]; }); if (placeData) { PLU.execActions(placeData.v + ";;find_task_road secret;;", function () { setTimeout(function () { var mapid = g_obj_map.get("msg_room").get("map_id"); var shortName = g_obj_map.get("msg_room").get("short"); YFUI.writeToOut("<span style='color:#FFF;'>--地图ID:" + mapid + "--</span>"); if (mapid == "public") { PLU.execActions("secret_op1;", function () { PLU.TMP.goingQixiaMijing = false; PLU.tryVisitQixia(qxName, giveNum, objectFN, ifAutoMj, ifAutoWb, callback); }); } else if (ifAutoMj) { UTIL.delSysListener("listenVisitNotice"); PLU.setBtnRed($("#btn_bt_autoVisitQixia"), 0); YFUI.writeToOut("<span style='color:yellow;'> ===== 进入了秘境! ===== </span>"); } else { var ss = g_obj_map.get("msg_room").elements.find(function (e) { return e.value == "仔细搜索"; }); if (ss) { var cmd_ss = g_obj_map.get("msg_room").get(ss.key.split("_")[0]); PLU.execActions(cmd_ss + ";;", function () { if (ifAutoWb) { var wb = g_obj_map.get("msg_room").elements.find(function (e) { return e.value.indexOf("秘境挖宝") >= 0; }); if (wb) { PLU.execActions("mijing_wb;;"); } } var sd = g_obj_map.get("msg_room").elements.find(function (e) { return e.value.indexOf("扫荡") >= 0; }); if (sd) { var cmd_sd = g_obj_map.get("msg_room").get(sd.key.split("_")[0]); PLU.doSaoDang(mapid, cmd_sd, function () { PLU.TMP.goingQixiaMijing = false; PLU.tryVisitQixia(qxName, giveNum, objectFN, ifAutoMj, ifAutoWb, callback); }); } else if (shortName == "无尽深渊") { PLU.goWuJinShenYuan(function () { PLU.TMP.goingQixiaMijing = false; PLU.tryVisitQixia(qxName, giveNum, objectFN, ifAutoMj, ifAutoWb, callback); }); } else { UTIL.delSysListener("listenVisitNotice"); PLU.setBtnRed($("#btn_bt_autoVisitQixia"), 0); YFUI.writeToOut("<span style='color:yellow;'> ===进入了未通关秘境!=== </span>"); } }); } } }, 1500); }); } return; } } var vis = msgTxt.match(/今日亲密度操作次数\((\d+)\/20\)/); if (vis) { PLU.STO.listenVisit && clearTimeout(PLU.STO.listenVisit); setTimeout(function () { if (!PLU.TMP.goingQixiaMijing) { PLU.STO.listenVisit = setTimeout(listenVisitTimeout, 4000); var objNpc = UTIL.findRoomNpc(qxName, false, true); if (objNpc) { PLU.doVisitAction(objNpc.key, giveNum); } else { YFUI.writeToOut("<span style='color:#FFF;'>--找不到奇侠!--</span>"); setTimeout(function () { PLU.tryVisitQixia(qxName, giveNum, objectFN, ifAutoMj, ifAutoWb, callback); }, 500); } } }, 500); return; } if (msgTxt.match("今日做了太多关于亲密度的操作")) { PLU.STO.listenVisit && clearTimeout(PLU.STO.listenVisit); callback && callback({ code: 1, msg: "今日奇侠友好度操作已经完毕" }); return; } if (msgTxt.match(/今日奇侠赠送次数(\d+)\/(\d+),.*赠送次数(\d+)\/(\d+)/)) { PLU.STO.listenVisit && clearTimeout(PLU.STO.listenVisit); callback && callback({ code: 1, msg: "今日奇侠友好度操作已经完毕" }); return; } if (msgTxt.match("扫荡成功,获得:")) { var xtnum = parseInt(msgTxt.split("、")[0].split("玄铁令x")[1]); if (xtnum) PLU.TMP.todayGetXT += xtnum; xtnum && YFUI.writeToOut("<span>--玄铁令+" + xtnum + "--</span>"); return; } if (msgTxt.match("你开始四处搜索……你找到了")) { var _xtnum = parseInt(msgTxt.split("、")[0].split("玄铁令x")[1]); if (_xtnum) PLU.TMP.todayGetXT += _xtnum; _xtnum && YFUI.writeToOut("<span>--玄铁令+" + _xtnum + "--</span>"); return; } }); PLU.execActions(qx.link + ";;", function () { var objNpc = UTIL.findRoomNpc(qxName, false, true); if (objNpc) { PLU.STO.listenVisit = setTimeout(listenVisitTimeout, 3000); PLU.doVisitAction(objNpc.key, giveNum); } else { YFUI.writeToOut("<span style='color:#FFF;'>--找不到奇侠:" + qxName + "--</span>"); setTimeout(function () { PLU.tryVisitQixia(qxName, giveNum, objectFN, ifAutoMj, ifAutoWb, callback); }, 500); } }); }); }, //================================================================================================ doVisitAction: function doVisitAction(qxKey, giveNum) { if (giveNum == 0) { PLU.execActions("ask " + qxKey + ";"); } else if (giveNum == 1) { PLU.execActions("auto_zsjd_" + qxKey.split("_")[0] + ";"); } else if (giveNum == 5) { PLU.execActions("auto_zsjd5_" + qxKey.split("_")[0] + ";"); } else { PLU.execActions("auto_zsjd20_" + qxKey.split("_")[0] + ";"); } }, //================================================================================================ doSaoDang: function doSaoDang(mapid, cmd, callback) { UTIL.addSysListener("listenVisitSaodang", function (b, type, subtype, msg) { if (type != "prompt") return; var xtnum = parseInt(msg.split("、")[0].split("玄铁令x")[1]); if (["yaowanggu", "leichishan"].includes(mapid)) { if (xtnum < 5) return setTimeout(function () { clickButton(cmd); }, 300); } else if (["liandanshi", "lianhuashanmai", "qiaoyinxiaocun", "duzhanglin", "shanya", "langhuanyudong", "dixiamigong"].includes(mapid)) { if (xtnum < 3) return setTimeout(function () { clickButton(cmd); }, 300); } UTIL.delSysListener("listenVisitSaodang"); PLU.execActions(cmd + " go;", function () { callback && callback(); }); }); setTimeout(function () { clickButton(cmd); }, 300); }, //================================================================================================ goWuJinShenYuan: function goWuJinShenYuan(endcallback) { //无尽深渊 var paths = "e;e;s;w;w;s;s;e;n;e;s;e;e;n;w;n;e;n;w".split(";"); var sidx = 0; var gostep = function gostep(pathArray, stepFunc) { var ca = pathArray[sidx]; PLU.execActions(ca + "", function () { stepFunc && stepFunc(); sidx++; if (sidx >= pathArray.length) { endcallback && endcallback(); } else { setTimeout(function () { gostep(pathArray, stepFunc); }, 250); } }); }; gostep(paths, function () { var fc = g_obj_map.get("msg_room").elements.find(function (e) { return e.value == "翻查"; }); if (fc) { var cmd_fc = g_obj_map.get("msg_room").get(fc.key.split("_")[0]); PLU.execActions(cmd_fc + ""); } }); }, //================================================================================================ toWaitCDKill: function toWaitCDKill($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) { //$("#btn_bt_waitCDKill").text('') return; } clickButton("golook_room"); YFUI.showPop({ title: "倒计时叫杀门派纷争", text: "倒计时最后5秒叫杀最近结束时间的门派纷争!,确定后单击NPC<br>", onOk: function onOk() { setTimeout(function (o) { $(document).one("click", function (o) { var npcbtn = $(o.target).closest("button"); var snpc = npcbtn[0].outerHTML.match(/clickButton\('look_npc (\w+)'/i); if (snpc && snpc.length >= 2) { var nowTime = new Date().getTime(), cMPFZ = null; for (var k in PLU.MPFZ) { if (!cMPFZ || cMPFZ.t > PLU.MPFZ[k].t) cMPFZ = PLU.MPFZ[k]; } if (cMPFZ) { PLU.TMP.DATA_MPFZ = Object.assign({}, cMPFZ, { killId: snpc[1] }); YFUI.showPop({ title: "倒计时叫杀门派纷争", text: '<div style="line-height:2;">人物:' + npcbtn.text() + "<br>地点:" + PLU.TMP.DATA_MPFZ.p + "<br>对决:" + PLU.mp2icon(PLU.TMP.DATA_MPFZ.v) + "</div>", okText: "好的", onOk: function onOk() { }, onNo: function onNo() { PLU.TMP.DATA_MPFZ = null; PLU.setBtnRed($btn, 0); } }); } } else { PLU.TMP.DATA_MPFZ = null; PLU.setBtnRed($btn, 0); } }); }, 500); }, onNo: function onNo() { PLU.TMP.DATA_MPFZ = null; PLU.setBtnRed($btn, 0); } }); }, //================================================================================================ mp2icon: function mp2icon(mplist) { var htm = "", zfarr = mplist.split(" VS "), zarr = zfarr[0].split("、"), farr = zfarr[1].split("、"); zarr.forEach(function (zm) { htm += '<span style="display:inline-block;background:#F66;border-radius:2px;padding:0 2px;margin:1px;color:#FFF;">' + zm + "</span>"; }); htm += '<span style="color:#FFF;background:#F00;font-weight:bold;border-radius:50%;padding:2px;">VS</span>'; farr.forEach(function (fm) { htm += '<span style="display:inline-block;background:#66F;border-radius:2px;padding:0 2px;margin:1px;color:#FFF;">' + fm + "</span>"; }); return htm; }, //================================================================================================ toCheckAndWaitCDKill: function toCheckAndWaitCDKill(nowTime) { var k = PLU.TMP.DATA_MPFZ.t + 1560000; var dt = Math.floor((k - nowTime) / 1000); if (dt == 5) { YFUI.writeToOut("<span style='color:#F99;'>--最后5秒,进入战斗!--</span>"); //PLU.TMP.DATA_MPFZ = null //PLU.setBtnRed($btn,0) PLU.autoFight({ targetKey: PLU.TMP.DATA_MPFZ.killId, fightKind: "kill", onFail: function onFail() { PLU.TMP.DATA_MPFZ = null; PLU.setBtnRed($("#btn_bt_waitCDKill"), 0); setTimeout(function (t) { PLU.autoChushi(); }, 500); }, onEnd: function onEnd() { PLU.TMP.DATA_MPFZ = null; PLU.setBtnRed($("#btn_bt_waitCDKill"), 0); setTimeout(function (t) { PLU.autoChushi(); }, 500); } }); } }, //================================================================================================ setListen: function setListen($btn, listenKey, stat) { var btnFlag = 0; if (stat != undefined) { btnFlag = PLU.setBtnRed($btn, stat); PLU.setCache(listenKey, stat); return; } else { btnFlag = PLU.setBtnRed($btn); } if (!btnFlag) { PLU.setCache(listenKey, 0); return; } if (listenKey == "listenQL") { //监听青龙 YFUI.showInput({ title: "监听本服青龙", text: '格式:击杀类型|物品词组<br>\n 击杀类型:0杀守方(好人),1杀攻方(坏人)。<br>\n 物品词组:以英文逗号分割多个关键词<br>\n <span style="color:red;">例如:</span><br>\n [例1] <span style="color:blue;">0|斩龙,斩龙宝镯,碎片</span><br>\n [例2] <span style="color:blue;">1|*</span>;\n ', value: PLU.getCache(listenKey + "_keys") || "0|斩龙,开天宝棍,天罡掌套,龙皮至尊甲衣", type: "textarea", onOk: function onOk(val) { var str = $.trim(val); if (!str || str.indexOf("|") < 0) return PLU.setBtnRed($btn, 0); PLU.setCache(listenKey + "_keys", str); PLU.setCache(listenKey, 1); }, onNo: function onNo() { PLU.setCache(listenKey, 0); PLU.setBtnRed($btn, 0); } }); } else if (listenKey == "listenTF") { //监听夜魔 YFUI.showInput({ title: "监听逃犯", text: '格式:击杀类型|逃犯词组<br>\n 击杀类型:0杀守方(逃犯),1杀攻方(捕快)。<br>\n 逃犯词组:以英文逗号分割多个关键词<br>\n <span style="color:#F00;">【新人】以#开头则等候他人开杀再进</span><br>\n <span style="color:#933;">例如:</span><br>\n [例1] <span style="color:blue;">0|夜魔*段老大,#夜魔*流寇</span>\n ', value: PLU.getCache(listenKey + "_keys") || "0|夜魔*段老大,夜魔*二娘,#夜魔*岳老三,#夜魔*云老四,#夜魔*流寇,#夜魔*恶棍,#夜魔*剧盗", type: "textarea", onOk: function onOk(val) { var str = $.trim(val); if (!str || str.indexOf("|") < 0) return PLU.setBtnRed($btn, 0); PLU.setCache(listenKey + "_keys", str); PLU.setCache(listenKey, 1); PLU.splitTFParam(); }, onNo: function onNo() { PLU.setCache(listenKey, 0); PLU.setBtnRed($btn, 0); } }); } else if (listenKey == "listenKFQL") { //监听跨服青龙 YFUI.showInput({ title: "监听跨服青龙", text: '格式:击杀类型|物品词组<br>\n 击杀类型:0杀守方(好人),1杀攻方(坏人)。<br>\n 物品词组:以英文逗号分割多个关键词<br>\n <span style="color:red;">例如:</span><br>\n [例1] <span style="color:blue;">0|斩龙,斩龙宝镯,碎片</span><br>\n [例2] <span style="color:blue;">1|*</span>;\n ', value: PLU.getCache(listenKey + "_keys") || "1|斩龙,开天宝棍,天罡掌套,龙皮至尊甲衣", type: "textarea", onOk: function onOk(val) { var str = $.trim(val); if (!str || str.indexOf("|") < 0) return PLU.setBtnRed($btn, 0); PLU.setCache(listenKey + "_keys", str); PLU.setCache(listenKey, 1); }, onNo: function onNo() { PLU.setCache(listenKey, 0); PLU.setBtnRed($btn, 0); } }); } else if (listenKey == "listenYX") { var _ref3; //监听游侠 YFUI.showInput({ title: "监听游侠", text: '格式:游侠词组<br>\n 游侠词组:以英文逗号分割多个关键词<br>\n <span style="color:red;">例如:</span><br>\n [例1] <span style="color:blue;">王语嫣,厉工,金轮法王,虚夜月,云梦璃,叶孤城</span><br>\n ', value: PLU.getCache(listenKey + "_keys") || (_ref3 = []).concat.apply(_ref3, _toConsumableArray(PLU.YFD.youxiaList.map(function (e) { return e.v; }))).join(","), type: "textarea", onOk: function onOk(val) { var str = $.trim(val); if (!str) return PLU.setBtnRed($btn, 0); PLU.setCache(listenKey + "_keys", str); PLU.setCache(listenKey, 1); }, onNo: function onNo() { PLU.setCache(listenKey, 0); PLU.setBtnRed($btn, 0); } }); } else if (listenKey == "autoTP") { //监听突破 YFUI.showInput({ title: "持续突破", text: '请输入需要自动突破的技能,以英文逗号分割,自动突破将在当前全部突破完后才开始。<br>\n 以1|开头使用金刚舍利加速<br>\n 以2|开头使用通天丸加速<br>\n 以3|开头使用突破宝典加速<br>\n 以4|开头使用三生石加速(未开发)<br>\n <span style="color:red;">例如:</span><br>\n [例1] <span style="color:blue;">千影百伤棍,1|排云掌法,2|无相金刚掌,3|降龙十八掌,独孤九剑</span>\n ', value: PLU.getCache(listenKey + "_keys") || "1|千影百伤棍,1|排云掌法,1|不动明王诀", type: "textarea", onOk: function onOk(val) { var str = $.trim(val); if (!str) return PLU.setBtnRed($btn, 0); PLU.setCache(listenKey + "_keys", str); PLU.setCache(listenKey, 1); PLU.getSkillsList(function (allSkills, tupoSkills) { if (tupoSkills.length == 0) { PLU.toToPo(); } }); }, onNo: function onNo() { PLU.setCache(listenKey, 0); PLU.setBtnRed($btn, 0); } }); } else if (listenKey == "autoDY") {//监听钓鱼 var yuanbao = g_obj_map.get("msg_attrs") && g_obj_map.get("msg_attrs").get("yuanbao"); var yuanbaoStr = Math.floor(yuanbao).toString(); // 将元宝数量转换为字符串 var deductedYuanbao = yuanbaoStr.length >= 5 ? Number(yuanbaoStr.slice(-5)) : 0; // 取后5位数作为扣除的元宝数量 var targetYuanbao = yuanbao - deductedYuanbao; // 计算保留的元宝数量 YFUI.writeToOut("<span style='color:#7FFF00;'>当前元宝数量: ".concat(yuanbao || "未知", "</span>")); YFUI.showInput({ title: "持续钓鱼", text: "请输入需要保留的元宝数,默认为去掉元宝后五位后取整", value: targetYuanbao, // 默认值为元宝数量减去扣除的元宝数量 onOk: function onOk(val) { var num = Number($.trim(val)); PLU.setCache(listenKey + "_key", num); PLU.setCache(listenKey, 1); var room = g_obj_map.get("msg_room"); if (room) room = room.get("short"); if (room != "桃溪" || UTIL.inHome()) { var path = ["team create;rank go 233;#6 s", "sw;se", "sw", "se", "s", "s"]; // 人满是啥提示...,不知道...(那就随机选位置吧( PLU.execActions(path.slice(0, Math.floor(Math.random() * 6) + 1).join(";") + ";diaoyu"); } }, onNo: function onNo() { PLU.setCache(listenKey, 0); PLU.setBtnRed($btn, 0); } }); } else if (listenKey == "autoCaicha") {//监听采茶 var yuanbao = g_obj_map.get("msg_attrs") && g_obj_map.get("msg_attrs").get("yuanbao"); var yuanbaoStr = Math.floor(yuanbao).toString(); // 将元宝数量转换为字符串 var deductedYuanbao = yuanbaoStr.length >= 5 ? Number(yuanbaoStr.slice(-5)) : 0; // 取后5位数作为扣除的元宝数量 var targetYuanbao = yuanbao - deductedYuanbao; // 计算保留的元宝数量 YFUI.writeToOut("<span style='color:#7FFF00;'>当前元宝数量: ".concat(yuanbao || "未知", "</span>")); YFUI.showInput({ title: "持续采茶", text: "请输入需要保留的元宝数,默认为去掉元宝后五位后取整", value: targetYuanbao, onOk: function onOk(val) { var num = Number($.trim(val)); PLU.setCache(listenKey + "_key", num); PLU.setCache(listenKey, 1); var room = g_obj_map.get("msg_room"); if (room) room = room.get("short"); if (room != "后山茶园" || UTIL.inHome()) { var path = ["team create;rank go 234;#3 s;e;ne;e;ne;ne;e;e;", "w", "w;w", "e", "e", "e;e"]; PLU.execActions(path.slice(0, Math.floor(Math.random() * 6) + 1).join(";") + ";diaoyu"); } }, onNo: function onNo() { PLU.setCache(listenKey, 0); PLU.setBtnRed($btn, 0); } }); } else if (listenKey == "autoConnect") { YFUI.showInput({ title: "自动重连", text: '请输入断线后自动重连的时间,重连方式为到时间自动刷新页面。<br>单位为秒,0代表不自动重连。<br>\n <span style="color:red;">例如:</span><br>\n [例1] <span style="color:blue;">60</span> 代表60秒后刷新页面\n ', value: PLU.getCache(listenKey + "_keys") || "0", //type:"textarea", onOk: function onOk(val) { var v = Number(val); if (val == "") return PLU.setBtnRed($btn, 0); PLU.setCache(listenKey + "_keys", v); PLU.setCache(listenKey, 1); }, onNo: function onNo() { PLU.setCache(listenKey, 0); PLU.setBtnRed($btn, 0); } }); } else if (listenKey == "autoSignIn") { //YFUI.showPop( YFUI.showPop({ title: "定时一键签到", text: '请输入自动签到的时间。<br>\n <div><span style="font-size:18px;line-height:2;">每日: </span><input id="autoSignInTime" type="time" style="font-size:20px;border-radius:5px;margin:10px 0"/></div>\n ', onOk: function onOk() { var v = $.trim($("#autoSignInTime").val()); if (v == "") return PLU.setBtnRed($btn, 0); PLU.setCache(listenKey, 1); }, onNo: function onNo() { PLU.setCache(listenKey, 0); PLU.setBtnRed($btn, 0); } }); } else if (listenKey == "autoQuitTeam") { //进塔离队 YFUI.showPop({ title: "进塔自动离队", text: "是否进塔自动离队?<br>", onOk: function onOk() { PLU.setCache(listenKey, 1); }, onNo: function onNo() { PLU.setCache(listenKey, 0); PLU.setBtnRed($btn, 0); } }); } else { PLU.setCache(listenKey, 1); return; } }, //================================================================================================ //================================================================================================ splitTFParam: function splitTFParam() { var ltl = (PLU.getCache("listenTF_keys").split("|")[1] || "").split(","); PLU.TMP.lis_TF_list = []; PLU.TMP.lis_TF_force = []; ltl.map(function (e, i) { if (e.charAt(0) == "#") { PLU.TMP.lis_TF_list.push(e.substring(1)); PLU.TMP.lis_TF_force.push(0); } else { PLU.TMP.lis_TF_list.push(e); PLU.TMP.lis_TF_force.push(1); } }); }, //================================================================================================ goQinglong: function goQinglong(npcName, place, gb, kf) { var placeData = PLU.YFD.qlList.find(function (e) { return e.n == place; }); if (kf || UTIL.inHome() && placeData) { PLU.execActions(placeData.v + ";golook_room", function () { var objNpc = UTIL.findRoomNpc(npcName, !Number(gb)); if (objNpc) { PLU.killQinglong(objNpc.key, 0); } else { YFUI.writeToOut("<span style='color:#FFF;'>--寻找目标失败!--</span>"); PLU.execActions("golook_room;home"); } }); } }, //================================================================================================ killQinglong: function killQinglong(npcId, tryNum) { PLU.autoFight({ targetKey: npcId, fightKind: "kill", autoSkill: "random", onFail: function onFail(errCode) { if (errCode >= 88 && tryNum < 100) { setTimeout(function () { PLU.killQinglong(npcId, tryNum + 1); }, 250); return; } YFUI.writeToOut("<span style='color:#FFF;'>--抢青龙失败!--</span>"); PLU.execActions("home;"); }, onEnd: function onEnd() { PLU.execActions("prev_combat;home;"); } }); }, //================================================================================================ goTaofan: function goTaofan(npcName, npcPlace, flyLink, gb, force) { if (UTIL.inHome()) { var ctn = 0, gocmd = flyLink; PLU.YFD.cityList.forEach(function (e, i) { if (e == npcPlace) ctn = i + 1; }); if (ctn > 0) gocmd = "jh " + ctn; PLU.execActions(gocmd + ";golook_room;", function (e) { setTimeout(function (t) { PLU.killTaofan(npcName, -Number(gb), force, 0); }, 1000); }); } }, //================================================================================================ killTaofan: function killTaofan(npcName, gb, force, tryCount) { console.debug(gb); var npcObj = UTIL.findRoomNpc(npcName, gb); if (npcObj) { if (force) { PLU.autoFight({ targetKey: npcObj.key, fightKind: "kill", autoSkill: "random", onFail: function onFail(errCode) { if (errCode == 4) { YFUI.writeToOut("<span style='color:#FFF;'>--已达到上限!取消逃犯监听!--</span>"); PLU.setListen($("#btn_bt_listenTF"), "listenTF", 0); } else if (errCode > 1 && tryCount < 36) { setTimeout(function () { PLU.killTaofan(npcName, gb, force, tryCount + 1); }, 500); return; } PLU.execActions("golook_room;home;"); }, onEnd: function onEnd() { PLU.execActions("prev_combat;home;"); } }); } else { PLU.waitDaLaoKill({ targetId: npcObj.key, onFail: function onFail(ec) { }, onOk: function onOk() { PLU.autoFight({ targetKey: npcObj.key, fightKind: "kill", autoSkill: "random", onFail: function onFail(errCode) { if (errCode == 4) { YFUI.writeToOut("<span style='color:#FFF;'>--已达到上限!取消逃犯监听--</span>"); PLU.setListen($("#btn_bt_listenTF"), "listenTF", 0); } else YFUI.writeToOut("<span style='color:#FFF;'>--'ERR=" + errCode + "--</span>"); PLU.execActions("golook_room;home;"); }, onEnd: function onEnd() { PLU.execActions("prev_combat;home;"); } }); } }); } } else { YFUI.writeToOut("<span style='color:#FFF;'>--找不到NPC!--</span>"); if (tryCount < 4) { return setTimeout(function () { PLU.killTaofan(npcName, gb, force, tryCount + 1); }, 500); } PLU.execActions("golook_room;home;"); } }, //================================================================================================ waitDaLaoKill: function waitDaLaoKill(_ref4) { var targetId = _ref4.targetId, onOk = _ref4.onOk, onFail = _ref4.onFail; var tryTimes = 0; UTIL.addSysListener("lookNpcWait", function (b, type, subtype, msg) { if (type == "notice" && subtype == "notify_fail" && msg.indexOf("没有这个人") >= 0) { YFUI.writeToOut("<span style='color:#FFF;'>--目标已丢失!--</span>"); UTIL.delSysListener("lookNpcWait"); return onFail && onFail(1); } if (type == "look_npc") { var desc = UTIL.filterMsg(b.get("long")); var lookInfo = desc.match(/[他|她]正与 (\S*)([\S\s]*) 激烈争斗中/); if (lookInfo && lookInfo.length > 2 && $.trim(lookInfo[2]) != "") { YFUI.writeToOut("<span style='color:#9F9;'>--目标已被大佬攻击,可以跟进--</span>"); UTIL.delSysListener("lookNpcWait"); return onOk && onOk(); } tryTimes++; if (tryTimes > 30) { UTIL.delSysListener("lookNpcWait"); return onFail && onFail(30); } else { setTimeout(function () { clickButton("look_npc " + targetId); }, 500); } } //如提前进入战斗可能是因为杀气, 逃跑后继续 if (type == "vs" && subtype == "vs_info" && b.get("vs2_pos1") != targetId) { PLU.autoEscape({ onEnd: function onEnd() { setTimeout(function () { clickButton("look_npc " + targetId); }, 500); } }); } }); clickButton("look_npc " + targetId); }, //================================================================================================ //================================================================================================ fixJhName: function fixJhName(name) { switch (name) { case "白驼山": return "白驮山"; case "黑木崖": return "魔教"; case "光明顶": return "明教"; case "铁血大旗门": return "大旗门"; case "梅庄": return "寒梅庄"; } return name; }, //================================================================================================ goFindYouxia: function goFindYouxia(params) { //{paths,idx,objectNPC} if (params.idx >= params.paths.length) { setTimeout(function () { PLU.execActions("home"); }, 500); YFUI.writeToOut("<span style='color:#FFF;'>--找不到游侠!...已搜索完地图--</span>"); return; } var acs = [params.paths[params.idx]]; PLU.actions({ paths: acs, idx: 0, onPathsEnd: function onPathsEnd() { setTimeout(function () { var npcObj = UTIL.findRoomNpc(params.objectNPC, false, true); if (npcObj) { YFUI.writeToOut("<span style='color:#FFF;'>--游侠已找到--</span>"); PLU.killYouXia(npcObj.key, 0); } else { params.idx++; PLU.goFindYouxia(params); } }, 300); }, onPathsFail: function onPathsFail() { setTimeout(function () { PLU.execActions("home"); }, 500); YFUI.writeToOut("<span style='color:#FFF;'>--找不到游侠!...路径中断--</span>"); return; } }); }, //================================================================================================ killYouXia: function killYouXia(npcId, tryNum) { PLU.autoFight({ targetKey: npcId, fightKind: "kill", autoSkill: "multi", onFail: function onFail(errCode) { if (String(errCode).indexOf("delay_") >= 0) { var mc = String(errCode).match(/delay_(\d+)/); if (mc) { var wtime = 500 + 1000 * Number(mc[1]); PLU.execActions("follow_play " + npcId + ";"); YFUI.writeToOut("<span style='color:#FFF;'>▶开始尝试做游侠跟班!!</span>"); setTimeout(function () { PLU.execActions("follow_play none", function () { YFUI.writeToOut("<span style='color:#FFF;'>◼停止做游侠跟班!!准备开杀!!</span>"); PLU.killYouXia(npcId, tryNum + 1); }); }, wtime); return; } } else if (errCode >= 88 && tryNum < 44) { setTimeout(function () { PLU.killYouXia(npcId, tryNum + 1); }, 1000); return; } else if (errCode == 1) { YFUI.writeToOut("<span style='color:#F99;'>--现场找不到游侠了!--</span>"); } else { YFUI.writeToOut("<span style='color:#F99;'>--攻击游侠失败!--</span>"); } PLU.execActions("home;"); }, onEnd: function onEnd() { PLU.execActions("prev_combat;home;"); } }); }, //================================================================================================ getSkillsList: function getSkillsList(callback) { UTIL.addSysListener("getSkillsList", function (b, type, subtype, msg) { if (type != "skills" && subtype != "list") return; UTIL.delSysListener("getSkillsList"); clickButton("prev"); var all = [], tupo = []; all = PLU.parseSkills(b); all.forEach(function (skill) { if (skill.state >= 4) { tupo.push(skill); } }); callback(all, tupo); }); clickButton("skills"); }, //================================================================================================ parseSkills: function parseSkills(b) { var allSkills = []; for (var i = b.elements.length - 1; i > -1; i--) { if (b.elements[i].key && b.elements[i].key.match(/skill(\d+)/)) { var attr = b.elements[i].value.split(","); var skill = { key: attr[0], name: $.trim(UTIL.filterMsg(attr[1])), level: Number(attr[2]), kind: attr[4], prepare: Number(attr[5]), state: Number(attr[6]), from: attr[7] }; allSkills.push(skill); } } allSkills = allSkills.sort(function (a, b) { if (a.kind == "known") return -1; else if (b.kind != "known" && a.from == "基础武功") return -1; else if (b.kind != "known" && b.from != "基础武功" && a.kind == "force") return -1; else return 1; }); return allSkills; }, //================================================================================================ toToPo: function toToPo() { setTimeout(function () { if (UTIL.inHome()) { PLU.getSkillsList(function (allSkills, tupoSkills) { if (tupoSkills.length > 0) { if (PLU.STO.outSkillList) clearTimeout(PLU.STO.outSkillList); PLU.STO.outSkillList = setTimeout(function () { PLU.STO.outSkillList = null; if (!!$("#out_top").height() && $("#out_top .outtitle").text() == "我的技能") clickButton("home"); }, 200); return; } var tpArr = PLU.getCache("autoTP_keys").split(","); var tpList = []; tpArr.forEach(function (s) { var sk = {}; var cs = s.match(/((\d)\|)?(.*)/); if (cs) { sk.name = cs[3]; sk.sp = Number(cs[2]); } else { sk.name = s; sk.sp = 0; } var skobj = allSkills.find(function (e) { return e.name.match(sk.name); }); if (skobj) tpList.push(Object.assign({}, skobj, sk)); }); PLU.TMP.stopToPo = false; PLU.toPo(tpList, 0); }); } }, 500); }, //================================================================================================ toPo: function toPo(tpList, skIdx) { if (skIdx < tpList.length && !PLU.TMP.stopToPo) { var acts = "enable " + tpList[skIdx].key + ";tupo go," + tpList[skIdx].key + ";"; if (tpList[skIdx].sp == 1) acts += "tupo_speedup4_1 " + tpList[skIdx].key + " go;"; else if (tpList[skIdx].sp == 2) acts += "tupo_speedup3_1 " + tpList[skIdx].key + " go;"; else if (tpList[skIdx].sp == 3) acts += "tupo_up " + tpList[skIdx].key + " go;"; else if (tpList[skIdx].sp == 4) acts += "items info obj_sanshengshi;event_1_66830905 " + tpList[skIdx].key + " go;"; PLU.execActions(acts, function () { setTimeout(function () { if (PLU.STO.outSkillList) clearTimeout(PLU.STO.outSkillList); PLU.STO.outSkillList = null; PLU.toPo(tpList, skIdx + 1); }, 300); }); } else { YFUI.writeToOut("<span style='color:yellow;'> ==突破完毕!== </span>"); clickButton("home"); } }, //================================================================================================ toBangFour: function toBangFour(n) { UTIL.log({ msg: " 进入帮四(" + n + ") ", type: "TIPS", time: new Date().getTime() }); PLU.STO.bangFourTo && clearTimeout(PLU.STO.bangFourTo); PLU.STO.bangFourTo = setTimeout(function () { clickButton("home"); }, 30 * 60 * 1000); clickButton("clan fb enter shiyueweiqiang-" + n, 0); }, toBangSix: function toBangSix() { UTIL.log({ msg: " 进入帮六 ", type: "TIPS", time: new Date().getTime() }); PLU.STO.bangSixTo && clearTimeout(PLU.STO.bangSixTo); PLU.STO.bangSixTo = setTimeout(function () { clickButton("home"); }, 30 * 60 * 1000); clickButton("clan fb enter manhuanqishenzhai", 0); }, //================================================================================================ inBangFiveEvent: function inBangFiveEvent() { PLU.toggleFollowKill($("#btn_bt_kg_followKill"), "followKill", 1); var moving = false; PLU.TMP.listenBangFive = true; UTIL.addSysListener("listenBangFive", function (b, type, subtype, msg) { if (!moving && type == "jh" && (subtype == "dest_npc" || subtype == "info")) { moving = true; var roomName = UTIL.filterMsg(g_obj_map.get("msg_room").get("short")); if (roomName.match(/蒙古高原|成吉思汗的金帐/) && !UTIL.roomHasNpc()) { PLU.execActions(";;n;", function () { moving = false; }); } else { moving = false; } } if (type == "home" && subtype == "index") { UTIL.delSysListener("listenBangFive"); YFUI.writeToOut("<span style='color:white;'> ==帮五完毕!== </span>"); PLU.execActions("golook_room;home"); } }); }, intervene: function intervene($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) { UTIL.delSysListener("intervene"); UTIL.delSysListener("score"); return; } var Fight = function Fight(b, num) { PLU.autoFight({ targetKey: b.get("vs2_pos" + num), fightKind: "fight", onEnd: function onEnd() { UTIL.delSysListener("intervene"); UTIL.delSysListener("score"); PLU.setBtnRed($btn); }, onFail: function onFail() { PLU.autoFight({ targetKey: b.get("vs2_pos" + num), onEnd: function onEnd() { UTIL.delSysListener("intervene"); UTIL.delSysListener("score"); PLU.setBtnRed($btn); }, onFail: function onFail() { if (num <= 7) { Fight(++num); } else { UTIL.delSysListener("intervene"); UTIL.delSysListener("score"); } } }); } }); }; UTIL.addSysListener("intervene", function (b, type, subtype, msg) { if (type == "vs" && subtype == "vs_info") { UTIL.delSysListener("intervene"); UTIL.delSysListener("score"); Fight(b, 1); } }); UTIL.addSysListener("score", function (b, type, subtype, msg) { if (type == "score" && subtype == "user") { if (b.get("long").indexOf("激烈争斗中...") == -1) { PLU.execActions("score " + b.get("id")); return; } UTIL.delSysListener("score"); PLU.execActions("watch_vs " + b.get("id")); } }); YFUI.showPop({ title: "杀隐藏怪", text: "自动观战,自动加入战斗<br>确认后,点开要跟的玩家页面", onNo: function onNo() { UTIL.delSysListener("intervene"); UTIL.delSysListener("score"); PLU.setBtnRed($btn); } }); }, // 字符串相似度算法 getSimilarity: function getSimilarity(str1, str2) { var sameNum = 0; for (var i = 0; i < str1.length; i++) for (var j = 0; j < str2.length; j++) if (str1[i] === str2[j]) { sameNum++; break; } var length = Math.max(str1.length, str2.length); return sameNum / length * 100 || 0; }, npcDataUpdate: function npcDataUpdate() { var wayList = _toConsumableArray(new Set(PLU.YFD.mapsLib.Npc.map(function (e) { return e.way; }))); if (PLU.YFD.mapsLib.Npc_New[PLU.YFD.mapsLib.Npc_New.length - 1]) var i = wayList.indexOf(PLU.YFD.mapsLib.Npc_New[PLU.YFD.mapsLib.Npc_New.length - 1].way); else var i = 0; PLU.UTIL.addSysListener("look_npc", function (b, type, subtype, msg) { var _PLU$YFD$cityId$roomI, _b$get; if (type != "look_npc") return; if (b.get("id").indexOf("bad_target_") == 0) return; if (b.get("id").indexOf("hero_") == 0) return; if (b.get("id").indexOf("eren_") == 0) return; if (b.get("id").indexOf("bukuai") == 0) return; if (PLU.YFD.qixiaList.includes(ansi_up.ansi_to_text(b.get("name")))) return; var roomInfo = g_obj_map.get("msg_room"); var jh = (_PLU$YFD$cityId$roomI = PLU.YFD.cityId[roomInfo.get("map_id")]) !== null && _PLU$YFD$cityId$roomI !== void 0 ? _PLU$YFD$cityId$roomI : roomInfo.get("map_id"); var curName = UTIL.filterMsg(roomInfo.get("short") || ""); PLU.YFD.mapsLib.Npc_New.push({ jh: jh, loc: curName, name_new: ansi_up.ansi_to_text(b.get("name")), id: b.get("id") || "", desc: ansi_up.ansi_to_text((_b$get = b.get("long")) === null || _b$get === void 0 ? void 0 : _b$get.split("\n")[1]), way: wayList[i] }); }); func = function (_func) { function func() { return _func.apply(this, arguments); } func.toString = function () { return _func.toString(); }; return func; }(function () { PLU.execActions(wayList[i], function () { var _iterator4 = _createForOfIteratorHelper(PLU.UTIL.getRoomAllNpc()), _step4; try { for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { var npc = _step4.value; PLU.execActions("look_npc " + npc.key); } } catch (err) { _iterator4.e(err); } finally { _iterator4.f(); } setTimeout(function () { i++; func(); }, 1500); }); }); func(); }, //================================================================================================ checkUseSkills: function checkUseSkills() { var curTime = new Date().getTime(); if (!PLU.battleData.performTime || curTime - PLU.battleData.performTime >= 400) { PLU.battleData.performTime = curTime; if (!PLU.battleData.mySide) { var vsInfo = g_obj_map.get("msg_vs_info"); for (var i = vsInfo.elements.length - 1; i > -1; i--) { var val = vsInfo.elements[i].value + ""; if (!val || val.indexOf(PLU.accId) < 0) continue; PLU.battleData.myPos = vsInfo.elements[i].key.charAt(7); PLU.battleData.mySide = vsInfo.elements[i].key.substring(0, 3); break; } } if (PLU.getCache("pSetting_快速连招") == "true") { if (PLU.getCache("autoPerform") >= 1) { PLU.AutoCombat(); } } else { if (PLU.battleData.mySide) { if (PLU.getCache("autoCure") == 1) { PLU.checkAutoCure(); } if (PLU.getCache("autoPerform") >= 1) { PLU.checkAutoPerform(); } } } } }, //================================================================================================ setAutoCure: function setAutoCure($btn, listenKey, stat) { if (listenKey == "autoCure") { //自动加血蓝 YFUI.showInput({ title: "自动加血加蓝", text: '格式:血百分比|加血技能,蓝百分比|加蓝技能,以英文逗号分割,每样只能设置一个技能。<br>\n <span style="color:red;">例如:</span><br>\n [例1] <span style="color:blue;">50|道种心魔经,10|不动明王诀</span><br> 血低于50%自动加血,蓝低于10%自动加蓝<br>\n [例2] <span style="color:blue;">50|白首太玄经,30|紫血大法</span><br> 血低于50%自动加血,蓝低于30%自动加蓝<br>\n [例3] <span style="color:blue;">30|紫血大法</span><br> 血低于30%自动加血技能,不自动加蓝<br>\n ', value: PLU.getCache(listenKey + "_keys") || "50|道种心魔经,10|不动明王诀", onOk: function onOk(val) { var str = $.trim(val); PLU.setCache(listenKey + "_keys", str); PLU.splitCureSkills(); }, onNo: function onNo() { } }); } }, toggleAutoCure: function toggleAutoCure($btn, listenKey, stat) { var btnFlag = 0; if (stat != undefined) { btnFlag = PLU.setBtnRed($btn, stat); PLU.setCache(listenKey, stat); } else { btnFlag = PLU.setBtnRed($btn); } if (!btnFlag) { return PLU.setCache(listenKey, 0); } else { PLU.setCache(listenKey, 1); setTimeout(function () { YFUI.writeToOut("<span style='color:yellow;'>自动血蓝: " + PLU.getCache(listenKey + "_keys") + " </span>"); }, 100); } }, //================================================================================================ splitCureSkills: function splitCureSkills() { var kf = (PLU.getCache("autoCure_keys") || "").split(","); PLU.TMP.autoCure_percent = ""; PLU.TMP.autoCure_skills = ""; PLU.TMP.autoCure_force_percent = ""; PLU.TMP.autoCure_force_skills = ""; if (kf.length > 0) { var acp = kf[0].split("|"); PLU.TMP.autoCure_percent = Number(acp[0]) || 50; PLU.TMP.autoCure_skills = acp[1]; if (kf.length > 1) { var acf = kf[1].split("|"); PLU.TMP.autoCure_force_percent = Number(acf[0]) || 10; PLU.TMP.autoCure_force_skills = acf[1]; } } }, //================================================================================================ checkAutoCure: function checkAutoCure() { var vsInfo = g_obj_map.get("msg_vs_info"); var userInfo = g_obj_map.get("msg_attrs"); var keePercent = (100 * Number(vsInfo.get(PLU.battleData.mySide + "_kee" + PLU.battleData.myPos)) / Number(userInfo.get("max_kee"))).toFixed(2); var forcePercent = (100 * Number(vsInfo.get(PLU.battleData.mySide + "_force" + PLU.battleData.myPos)) / Number(userInfo.get("max_force"))).toFixed(2); if (!PLU.TMP.autoCure_percent) { PLU.splitCureSkills(); } if (PLU.TMP.autoCure_force_skills && Number(forcePercent) < PLU.TMP.autoCure_force_percent) { PLU.autoCureByKills(PLU.TMP.autoCure_force_skills, forcePercent); } else if (PLU.TMP.autoCure_skills && Number(keePercent) < PLU.TMP.autoCure_percent && PLU.battleData.cureTimes < 3) { PLU.autoCureByKills(PLU.TMP.autoCure_skills, forcePercent); } }, //================================================================================================ autoCureByKills: function autoCureByKills(skill, forcePercent) { if (PLU.battleData && PLU.battleData.xdz > 2) { var rg = new RegExp(skill); var useSkill = PLU.selectSkills(rg); if (useSkill) { clickButton(useSkill.key, 0); if (Number(forcePercent) > 1) PLU.battleData.cureTimes++; } } }, //================================================================================================ setAutoPerform: function setAutoPerform($btn, listenKey, stat) { if (listenKey == "autoPerform") { //自动技能 var skillsList = []; try { skillsList = JSON.parse(PLU.getCache(listenKey + "_keysList")); } catch (error) { skillsList = ["6|千影百伤棍,燎原百破", "", "", "", "3|剑"]; } YFUI.showInput({ title: "自动技能", text: '格式:触发气值|技能词组,以英文逗号分割多个关键词。<br>\n <span style="color:red;">例如:</span><br>\n [例1] <span style="color:blue;">9|千影百伤棍,九天龙吟剑法,排云掌法</span><br> 气大于等于9时自动使用技能<br>\n ', value: skillsList, inputs: ["技能1", "技能2", "技能3", "技能4"], onOk: function onOk(val) { PLU.setCache(listenKey + "_keysList", JSON.stringify(val)); if (PLU.getCache(listenKey)) { PLU.setPerformSkill(PLU.getCache(listenKey)); } }, onNo: function onNo() { } }); } }, toggleAutoPerform: function toggleAutoPerform($btn, listenKey, stat) { var curIdx = Number(PLU.getCache(listenKey)); if (stat != undefined) { if (stat > 0) { PLU.setBtnRed($btn, 1); PLU.setPerformSkill(stat); } else PLU.setBtnRed($btn, 0); $btn.text(["连招", "技一", "技二", "技三", "技四"][stat]); PLU.setCache(listenKey, stat); if (stat > 0) PLU.TMP.lastAutoPerformSet = stat; } else { var nowTime = Date.now(); if (curIdx == 0 && nowTime - (PLU.TMP.lastClickAutoPerform || 0) < 350) { curIdx = PLU.TMP.lastAutoPerformSet || 1; curIdx++; if (curIdx > 4) curIdx = 1; } else { curIdx = curIdx == 0 ? PLU.TMP.lastAutoPerformSet || 1 : 0; } PLU.TMP.lastClickAutoPerform = nowTime; if (curIdx > 0) PLU.TMP.lastAutoPerformSet = curIdx; PLU.setCache(listenKey, curIdx); if (curIdx == 0) { PLU.setBtnRed($btn, 0); $btn.text("连招"); } else { PLU.setBtnRed($btn, 1); $btn.text(["连招", "技一", "技二", "技三", "技四"][curIdx]); PLU.setPerformSkill(curIdx); } } }, setPerformSkill: function setPerformSkill(idx) { var skillsList = []; idx = idx - 1; try { skillsList = JSON.parse(PLU.getCache("autoPerform_keysList")); } catch (error) { skillsList = []; } var str = skillsList[idx] || ""; var aps = str.split("|"); if (aps && aps.length == 2) { PLU.TMP.autoPerform_xdz = Number(aps[0]); PLU.TMP.autoPerform_skills = aps[1].split(","); } else { PLU.TMP.autoPerform_xdz = 0; PLU.TMP.autoPerform_skills = []; } setTimeout(function () { var setCh = ["一", "二", "三", "四"][idx]; YFUI.writeToOut("<span style='color:yellow;'>自动技能[" + setCh + "] : " + str + " </span><br><span style='color:white;'>** 双击自动技能按钮切换技能设置 **</span>"); }, 100); }, //================================================================================================ AutoCombat() { // if(PLU.battleData.autoSkill) return; if (!PLU.TMP.autoPerform_xdz) return; // if(!PLU.TMP.autoPerform_xdz){ // let aps = PLU.getCache("autoPerform_keys").split('|') // PLU.TMP.autoPerform_xdz = Number(aps[0]) // PLU.TMP.autoPerform_skills = aps[1].split(',') //} let skillIdA = ['1', '2', '3', '4', '5', '6', '7']; let skillArr = PLU.TMP.autoPerform_skills; // 回血 if (PLU.getCache("autoCure") == 1) { let vsInfo = g_obj_map.get("msg_vs_info"); let userInfo = g_obj_map.get("msg_attrs"); let keePercent = ((100 * Number(vsInfo.get(PLU.battleData.mySide + "_kee" + PLU.battleData.myPos))) / Number(userInfo.get("max_kee"))).toFixed(2); let forcePercent = ((100 * Number(vsInfo.get(PLU.battleData.mySide + "_force" + PLU.battleData.myPos))) / Number(userInfo.get("max_force"))).toFixed(2); if (!PLU.TMP.autoCure_percent) { PLU.splitCureSkills(); } if (PLU.TMP.autoCure_force_skills && Number(forcePercent) < PLU.TMP.autoCure_force_percent) { PLU.autoCureByKills(PLU.TMP.autoCure_force_skills, forcePercent); } else if (PLU.TMP.autoCure_skills && Number(keePercent) < PLU.TMP.autoCure_percent && PLU.battleData.cureTimes < 3) { PLU.autoCureByKills(PLU.TMP.autoCure_skills, forcePercent); } } PLU.battleData.xdz = gSocketMsg.get_xdz(); if (PLU.battleData.xdz >= PLU.TMP.autoPerform_xdz) { //console.log('自动技能:' + skillArr + '\n当前行动值: ' + PLU.battleData.xdz); $.each(skillArr, function (index, val) { var skillName = val; for (var i = 0; i < skillIdA.length; i++) { var btnNum = skillIdA[i]; var btn = $('#skill_' + btnNum); var btnName = btn.text(); if (btnName.indexOf(skillName) > -1 ) { btn.find('button').trigger('click'); break; } } }); } // if (PLU.battleData.xdz >= PLU.TMP.autoPerform_xdz) { // if (PLU.TMP.autoPerform_skills && PLU.TMP.autoPerform_skills.length > 0) { // PLU.TMP.autoPerform_skills.forEach((skn, idx) => { // let useSkill = PLU.selectSkills(skn); // if (useSkill) { // setTimeout((e) => { // clickButton(useSkill.key, 0); // }, idx * 100); // } // }); // } // } }, //================================================================================================ checkAutoPerform: function checkAutoPerform() { // if(PLU.battleData.autoSkill) return; if (!PLU.TMP.autoPerform_xdz) return; // if(!PLU.TMP.autoPerform_xdz){ // let aps = PLU.getCache("autoPerform_keys").split('|') // PLU.TMP.autoPerform_xdz = Number(aps[0]) // PLU.TMP.autoPerform_skills = aps[1].split(',') // } if (PLU.battleData.xdz >= PLU.TMP.autoPerform_xdz) { if (PLU.TMP.autoPerform_skills && PLU.TMP.autoPerform_skills.length > 0) { PLU.TMP.autoPerform_skills.forEach(function (skn, idx) { var useSkill = PLU.selectSkills(skn); if (useSkill) { setTimeout(function (e) { clickButton(useSkill.key, 0); }, idx * 100); } }); } } }, //================================================================================================ setFightSets: function setFightSets($btn, listenKey, stat) { if (listenKey == "followKill") { //开跟杀 YFUI.showInput({ title: "开跟杀", text: '格式:跟杀的人名词组,以英文逗号分割多个关键词,人名前带*为反跟杀。<br>\n <span style="color:red;">例如:</span><br>\n [例1] <span style="color:blue;">步惊鸿,*醉汉</span><br> 步惊鸿攻击(杀or比试)谁我攻击谁;谁攻击醉汉我攻击谁<br>\n ', value: PLU.getCache(listenKey + "_keys") || "☆,★,人", //type:"textarea", onOk: function onOk(val) { var str = $.trim(val); PLU.setCache(listenKey + "_keys", str); PLU.splitFollowKillKeys(); }, onNo: function onNo() { } }); } }, toggleFollowKill: function toggleFollowKill($btn, listenKey, stat) { var btnFlag = 0; if (stat != undefined) { btnFlag = PLU.setBtnRed($btn, stat); PLU.setCache(listenKey, stat); } else { btnFlag = PLU.setBtnRed($btn); } if (!btnFlag) { return PLU.setCache(listenKey, 0); } else { PLU.splitFollowKillKeys(); PLU.setCache(listenKey, 1); setTimeout(function () { YFUI.writeToOut("<span style='color:yellow;'>自动跟杀: " + PLU.getCache(listenKey + "_keys") + " </span>"); }, 100); } }, //================================================================================================ splitFollowKillKeys: function splitFollowKillKeys() { var keystr = PLU.getCache("followKill_keys") || ""; var keys = keystr.split(/[,,]/); PLU.FLK = { followList: [], defendList: [] }; keys.forEach(function (e) { if (!e) return; if (e.charAt(0) == "*") { PLU.FLK.defendList.push(e.substring(1)); } else { PLU.FLK.followList.push(e); } }); }, //================================================================================================ toCheckFollowKill: function toCheckFollowKill(attacker, defender, fightType, msgText) { if (!PLU.FLK) PLU.splitFollowKillKeys(); for (var i = 0; i < PLU.FLK.followList.length; i++) { var flname = PLU.FLK.followList[i]; if (attacker.match(flname)) { PLU.autoFight({ targetName: defender, fightKind: fightType, onFail: function onFail() { }, onEnd: function onEnd() { } }); return; } } for (var _i = 0; _i < PLU.FLK.defendList.length; _i++) { var dfname = PLU.FLK.defendList[_i]; if (defender.match(dfname)) { PLU.autoFight({ targetName: attacker, fightKind: fightType, onFail: function onFail() { }, onEnd: function onEnd() { } }); return; } } }, //================================================================================================ startSync: function startSync($btn) { PLU.getTeamInfo(function (t) { if (!t) PLU.setBtnRed($btn); else { YFUI.writeToOut("<span style='color:yellow;'>===队伍同步开始" + (t.is_leader ? ", <b style='color:#F00;'>我是队长</b>" : "") + " ===</span>"); if (t.is_leader) { PLU.TMP.leaderTeamSync = true; } else { PLU.listenTeamSync(t.leaderId); } } }); }, toggleTeamSync: function toggleTeamSync($btn) { var btnFlag = PLU.setBtnRed($btn); if (btnFlag) { if (PLU.TMP.firstSync) PLU.startSync($btn); else { YFUI.showPop({ title: "队伍同步", text: "<b style='color:#F00;'>入队后再打开队伍同步!!</b><br>队长发布指令, 队员监听同步指令!", okText: "同步", onOk: function onOk(e) { PLU.TMP.firstSync = 1; PLU.startSync($btn); }, onNo: function onNo() { PLU.setBtnRed($btn); }, onX: function onX() { PLU.setBtnRed($btn); } }); } } else { PLU.TMP.leaderTeamSync = false; UTIL.delSysListener("syncTeamChannel"); } }, //================================================================================================ commandTeam: function commandTeam(args) { if (!PLU.TMP.leaderTeamSync) return; if (!g_gmain.is_fighting && !args[0].match(/team chat|send_chat|attr|watch\_vs/)) { var cmdStr = args[0].replace(/\s/g, "$"); clickButton("team chat synCmd=" + cmdStr); clickButton("send_chat", 0); } }, //================================================================================================ listenTeamSync: function listenTeamSync(leaderId) { UTIL.addSysListener("syncTeamChannel", function (b, type, subtype, msg) { if (type != "main_msg" || !msg.match(/\003href;0;team\003【队伍】\0030\003/)) return; var l = msg.match(/\003href;0;team\003【队伍】.*href;0;score ([\w\(\)]+)\003(.*)\0030\003:(.*)/); if (l && l[1] == leaderId) { var synCmd = l[3].replace("synCmd=", "").replace("。", ".").replace(/\$/g, " "); clickButton(synCmd); } }); }, //================================================================================================ getTeamInfo: function getTeamInfo(callback) { UTIL.addSysListener("checkTeam", function (b, type, subtype, msg) { if (type != "team" && subtype != "info") return; UTIL.delSysListener("checkTeam"); if (b.get("team_id")) { if (b.get("is_member_of") == "1") { callback && callback({ is_leader: parseInt(b.get("is_leader")), leaderId: b.get("member1").split(",")[0] }); } else { callback && callback(0); } } else { callback && callback(0); } clickButton("prev"); }); clickButton("team"); }, //================================================================================================ setSkillGroup: function setSkillGroup(idx) { if (g_gmain.is_fighting) return; $(".menu").hide(); var lsgTimeOut = setTimeout(function () { UTIL.delSysListener("loadSkillGroup"); }, 5000); UTIL.addSysListener("loadSkillGroup", function (b, type, subtype, msg) { if (type != "enable" && subtype !== "list") return; UTIL.delSysListener("loadSkillGroup"); clearTimeout(lsgTimeOut); clickButton("prev"); }); clickButton("enable mapped_skills restore go " + idx); }, //================================================================================================ setWearEquip: function setWearEquip(idx) { if (g_gmain.is_fighting) return; $(".menu").hide(); var equipKey = "equip_" + idx + "_keys"; YFUI.showInput({ title: "装备组-" + idx, text: '格式:武器装备词组,以英文逗号分割多个关键词,<br>\n <span style="color:#D60;">武器名前必须带上*,入脉武器名前带**。<br>\n 卸下武器名前带上#。</span><br>\n <span style="color:red;">例如:</span><br>\n [例1] <span style="color:blue;">#风泉之剑,*离别钩,*倾宇破穹棍,**驭风腾云,霸天圣袍,紫贪狼戒</span><br>\n [例2] <span style="color:blue;">*风泉之剑,**雨叶魔枪,木棉袈裟,龙渊扳指,大士无双帽,天玑九玄冠,博睿扳指,崆峒不老戒,杨柳怨羌笛,*妙韵梨花萧</span><br>\n ', value: PLU.getCache(equipKey) || "", type: "textarea", onOk: function onOk(val) { var str = $.trim(val); if (!str) return; PLU.setCache(equipKey, str); PLU.wearEquip(str); }, onNo: function onNo() { } }); }, wearEquip: function wearEquip(equipsStr) { PLU.getAllItems(function (list) { var equips = equipsStr.split(","), equipCmds = ""; var equipArr = equips.forEach(function (e) { var eqObj = {}; if (e.substr(0, 1) == "#") { eqObj = { type: -1, name: e.substr(1) }; } else if (e.substr(0, 2) == "**") { eqObj = { type: 2, name: e.substr(2) }; } else if (e.substr(0, 1) == "*") { eqObj = { type: 1, name: e.substr(1) }; } else { eqObj = { type: 0, name: e }; } var bagItem = list.find(function (it) { return !!it.name.match(eqObj.name); }); if (bagItem) { if (eqObj.type == -1) equipCmds += "unwield " + bagItem.key + ";"; else if (eqObj.type == 2) equipCmds += "wield " + bagItem.key + " rumai;"; else if (eqObj.type == 1) equipCmds += "wield " + bagItem.key + ";"; else equipCmds += "wear " + bagItem.key + ";"; } }); PLU.execActions(equipCmds, function () { YFUI.writeToOut("<span style='color:yellow;'> ==装备完毕!== </span>"); if (g_gmain.is_fighting) gSocketMsg.go_combat(); }); }); }, //================================================================================================ showLog: function showLog() { if ($("#myTools_InfoPanel").length > 0) return $("#myTools_InfoPanel").remove(); var $logPanel = YFUI.showInfoPanel({ text: "", onOpen: function onOpen() { $("#myTools_InfoPanel .infoPanel-wrap").html(PLU.logHtml); $("#myTools_InfoPanel .infoPanel-wrap").scrollTop($("#myTools_InfoPanel .infoPanel-wrap")[0].scrollHeight); }, onNo: function onNo() { PLU.logHtml = ""; UTIL.logHistory = []; UTIL.setMem("HISTORY", JSON.stringify(this.logHistory)); $("#myTools_InfoPanel .infoPanel-wrap").empty(); }, onClose: function onClose() { } }); }, //================================================================================================ updateShowLog: function updateShowLog(e) { var html = '<div style="'.concat(e.ext.style, '">').concat(UTIL.getNow(e.ext.time), " ").concat(e.ext.msg, "</div>"); PLU.logHtml += html; if ($("#myTools_InfoPanel").length < 1) return; $("#myTools_InfoPanel .infoPanel-wrap").append(html); $("#myTools_InfoPanel .infoPanel-wrap").scrollTop($("#myTools_InfoPanel .infoPanel-wrap")[0].scrollHeight); }, //================================================================================================ goHJS: function goHJS(where, npc) { var roomInfo = g_obj_map.get("msg_room"); var curName = UTIL.filterMsg(roomInfo.get("short") || ""); var act = ""; if (curName == "青苔石阶" && roomInfo.get("northwest") == "青苔石阶") act = "nw"; else if (curName == "青苔石阶" && roomInfo.get("northeast") == "青苔石阶") act = "ne"; else if (curName == "青苔石阶" && roomInfo.get("southwest") == "青苔石阶") act = "sw"; else if (curName == "榆叶林" && roomInfo.get("north") == "榆叶林") act = "n"; else if (curName == "榆叶林" && roomInfo.get("south") == "榆叶林") act = "s"; else if (curName == "世外桃源" && where == "镜星府") act = "nw"; else if (curName == "世外桃源" && where == "荣威镖局") act = "ne"; else if (curName == "世外桃源" && where == "碧落城") act = "s"; if (act) PLU.execActions(act, function () { var npcObj = roomInfo.get("npc1"); if (npcObj) { var npcName = npcObj.split(",")[1]; } if (npc && (npcName && npcName != npc || !npcObj)) PLU.execActions("jh 2;n;n;e;s;luoyang317_op1;go_hjs go;se;se;ne;w;n;", function () { PLU.goHJS(where, npc); }); else PLU.goHJS(where, npc); }); }, //================================================================================================ goHaRi: function goHaRi(callback) {//西夏哈日 var roomInfo = g_obj_map.get("msg_room") || new Map(); var curName = UTIL.filterMsg(roomInfo.get("short") || ""); var act = ""; if (curName == "沙漠迷宫") { if (roomInfo.get("east") == "沙漠迷宫") act = "e"; else if (roomInfo.get("north") == "沙漠迷宫") act = "n"; else if (roomInfo.get("west") == "沙漠迷宫") act = "w"; else if (roomInfo.get("south") == "沙漠迷宫") act = "s"; if (act) PLU.execActions(act, function () { setTimeout(function () { PLU.goHaRi(callback); }, 250); }); } else if (curName == "荒漠") { PLU.execActions("n;n;nw;n;ne;", function () { YFUI.writeToOut("<span style='color:#FFF;'>--到达--</span>"); PLU.autoFight({ targetCommand: "event_1_28045408", onEnd: function onEnd() { PLU.execActions("say 自己看", function () { YFUI.writeToOut("<span style='color:#FFF;'>--击杀哈日--</span>"); callback && callback(); }); } }); }); } else { PLU.execActions("rank go 311;s;s;sw;se;se;se;e;se;se;ne;", function () { setTimeout(function () { PLU.goHaRi(callback); }, 250); }); } }, //================================================================================================ queryJHMenu: function queryJHMenu($btn, jhname) { var npcList = PLU.YFD.mapsLib.Npc.filter(function (e) { return e.jh == jhname; }); npcList.forEach(function (e) { var str = [e.jh, e.loc, e.name].filter(function (s) { return !!s; }).join("-"); YFUI.writeToOut("<span><a style='text-decoration:underline;color:yellow;cursor:pointer;' onclick='PLU.goNpcWay(\"" + str + '","' + e.way + "\")'>" + str + "</a> <a style='text-decoration:underline;color:yellow;cursor:pointer;' onclick='PLU.showNpcWay(\"" + str + '","' + e.way + "\")'>路徑詳情</a></span>"); }); YFUI.writeToOut("<span>----------</span>"); }, //================================================================================================ toQueryNpc: function toQueryNpc() { YFUI.showInput({ title: "查找NPC", text: "输入NPC名字,可模糊匹配,支持<a target='_blank' href='https://www.runoob.com/regexp/regexp-syntax.html'>正则表达式</a>,同时支持简体(不包括地址名)和繁体<br>" + "正则表达式之外语法例子:<br>" + "[例1] 开封@毒蛇<br>" + "[例2] 星宿海@百龙山@毒蛇" + "[例3] ^.?(男|女)[孩童]", value: PLU.getCache("prevSearchStr") || "^.?(男|女)[孩童]", onOk: function onOk(val) { if (!$.trim(val)) return; var str = $.trim(val); PLU.setCache("prevSearchStr", str); PLU.queryNpc(str + "道"); }, onNo: function onNo() { } }); }, // 查询房间路径 queryRoomPath: function queryRoomPath() { var _g_obj_map2; if (UTIL.inHome()) return; var jh = PLU.YFD.cityId[(_g_obj_map2 = g_obj_map) === null || _g_obj_map2 === void 0 || (_g_obj_map2 = _g_obj_map2.get("msg_room")) === null || _g_obj_map2 === void 0 ? void 0 : _g_obj_map2.get("map_id")]; if (jh) { var _g_obj_map3, _PLU$queryNpc$; var room = ansi_up.ansi_to_text((_g_obj_map3 = g_obj_map) === null || _g_obj_map3 === void 0 || (_g_obj_map3 = _g_obj_map3.get("msg_room")) === null || _g_obj_map3 === void 0 ? void 0 : _g_obj_map3.get("short")); return (_PLU$queryNpc$ = PLU.queryNpc(jh + "@" + room + "@.*道", true)[0]) === null || _PLU$queryNpc$ === void 0 ? void 0 : _PLU$queryNpc$.way; } }, // 链接两个路径终点 linkPath: function linkPath(pathA, pathB) { if (!pathA) return pathB; var arrayA = pathA.split(";"); var arrayB = pathB.split(";"); var len = Math.min(arrayA.length, arrayB.length); for (var index = 0; index < len; index++) if (arrayA[index] != arrayB[index]) break; if (!index) return pathB; return arrayA.slice(index).reverse().map(function (e) { var cmd = e.match(/^(#\d+ )?([ns]?[we]?)$/); if (cmd) { if (!cmd[1]) cmd[1] = ""; if (cmd[2].indexOf("n") == 0) { var way = cmd[2].replace("n", "s"); } else { var way = cmd[2].replace("s", "n"); } if (way.indexOf("w") >= 0) { way = way.replace("w", "e"); } else { way = way.replace("e", "w"); } return cmd[1] + way; } // 迷宫反走 cmd = e.match(/^(.+):(.+)\^(.+)$/); if (cmd) return cmd[1] + ":" + cmd[3] + "^" + cmd[2]; return e; }).concat(arrayB.slice(index)).join(";"); }, // 最短路径 minPath: function minPath(pathA, pathB) { var linkPath = PLU.linkPath(pathA, pathB); if (linkPath == "" || linkPath == pathB) return linkPath; var a = linkPath.split(";"); var len = a.length; for (var index = 0; index < len; index++) { var cmd = a[index].match(/^(.+):(.+\^.+)$/); if (cmd) a[index] = PLU.YFD.mapsLib.Labyrinth[cmd[1]][cmd[2]]; } a = a.join(";").split(";"); var b = pathB.split(";"); len = b.length; for (var index = 0; index < len; index++) { var _cmd = b[index].match(/^(.+):(.+\^.+)$/); if (_cmd) b[index] = PLU.YFD.mapsLib.Labyrinth[_cmd[1]][_cmd[2]]; } b = b.join(";").split(";"); return a.length <= b.length ? linkPath : pathB; }, //================================================================================================ formatNpcData: function formatNpcData(text) { var npc = text.match(/^(.*)@(.*)@(.*)道$/); if (npc) { var jh = npc[1]; var loc = npc[2]; var name = "^" + npc[3] + "$"; } else { npc = text.match(/^([^*-]*)[@*-](.*)道$/); if (npc) { if (npc[1] == "茶圣" || npc[1] == "青衣剑士") { var name = "^" + npc[1] + "-" + npc[2] + "$"; } else { var jh = npc[1]; var name = "^" + npc[2] + "$"; } } else { npc = text.match(/^(.*)道$/); if (npc) { var name = npc[1]; } else { var name = text; } } } return [jh, loc, name]; }, queryNpc: function queryNpc(name, quiet) { if (!name) return; var _PLU$formatNpcData = PLU.formatNpcData(name), _PLU$formatNpcData2 = _slicedToArray(_PLU$formatNpcData, 3), jh = _PLU$formatNpcData2[0], loc = _PLU$formatNpcData2[1], tmpName = _PLU$formatNpcData2[2]; name = tmpName; var npcLib = PLU.YFD.mapsLib.Npc; var findList = npcLib.filter(function (e) { if (e.jh == jh && e.loc == loc && (e.name.match(name) || e.name_tw && e.name_tw.match(name) || e.name_new && e.name_new.match(name))) return true; return false; }); if (findList.length == 0) findList = npcLib.filter(function (e) { if ((e.jh == jh || !jh) && (e.name.match(name) || e.name_tw && e.name_tw.match(name) || e.name_new && e.name_new.match(name))) return true; return false; }); if (findList.length == 0) findList = npcLib.filter(function (e) { if (e.name.match(name) || e.name_tw && e.name_tw.match(name) || e.name_new && e.name_new.match(name)) return true; return false; }); var res = []; if (findList && findList.length > 0) { findList.forEach(function (e) { var str = [e.jh, e.loc, _(e.name, e.name_tw)].filter(function (s) { return !!s; }).join("-"); if (!quiet) YFUI.writeToOut("<span><a style='text-decoration:underline;color:yellow;cursor:pointer;' onclick='PLU.goNpcWay(\"" + str + '","' + e.way + "\")'>" + str + "</a> <a style='text-decoration:underline;color:yellow;cursor:pointer;' onclick='PLU.showNpcWay(\"" + str + '","' + e.way + "\")'>路径详情</a></span>"); res.push(e); }); if (!quiet) YFUI.writeToOut("<span>----------</span>"); } else if (!quiet) { YFUI.writeToOut("<span style='color:#F66;'>查询不到相关数据</span>"); } return res; }, //================================================================================================ toPathNpc: function toPathNpc() { var defaultMapId = PLU.getCache("pathFindMap") || "1"; var citys = PLU.YFD.cityList.map(function (c, i) { var issel = i + 1 == defaultMapId ? "selected" : ""; return '<option value="' + (i + 1) + '" ' + issel + ">" + c + "</option>"; }).join(""); YFUI.showPop({ title: "全图找NPC", text: '选择地图, 输入NPC名字,可模糊匹配<br>\n <div style=\'margin:10px 0;\'>\n <span>地图: </span>\n <select id="pathFindMap" style="font-size:15px;height:32px;width:81%;border:1px solid #444;">\n '.concat(citys, '\n </select>\n </div>\n <div style=\'margin:10px 0;\'>\n <span>名字: </span>\n <input id="pathFindNpc" value="').concat(PLU.getCache("pathFindNpc") || "小龙人", '" style="font-size:14px;height:26px;width:80%;border:1px solid #444;"></input>\n </div>'), onOk: function onOk() { var mapStr = $.trim($("#pathFindMap").val()), npcStr = $.trim($("#pathFindNpc").val()); if (!npcStr) return; PLU.setCache("pathFindMap", mapStr); PLU.setCache("pathFindNpc", npcStr); var jhMap = PLU.YFD.mapsLib.Map[parseInt(mapStr) - 1]; if (!jhMap) { return YFUI.writeToOut("<span style='color:#F66;'>---无地图数据---</span>"); } else { var ways = jhMap.way.split(";"); console.log({ paths: ways, idx: 0, objectNPC: npcStr }); PLU.goPathFindNpc({ paths: ways, idx: 0, objectNPC: npcStr }); } }, onNo: function onNo() { } }); }, goPathFindNpc: function goPathFindNpc(params) { //goFindYouxia if (params.idx >= params.paths.length) { if (params.count) { params.idx = 0; setTimeout(function () { PLU.goPathFindNpc(params); }, 500); } else { setTimeout(function () { PLU.execActions("home"); }, 100); YFUI.writeToOut("<span style='color:#FFF;'>--找不到目标NPC!...已搜索完地图--</span>"); return; } } var acs = [params.paths[params.idx]]; PLU.actions({ paths: acs, idx: 0, onPathsEnd: function onPathsEnd() { setTimeout(function () { var npcObj = UTIL.findRoomNpcReg(params.objectNPC); if (npcObj) { YFUI.writeToOut("<span style='color:#FFF;'>--目标NPC已找到--</span>"); if (params.count) PLU.autoFight({ targetKey: npcObj.key, autoSkill: "multi", onEnd: function onEnd() { params.count--; params.idx++; PLU.goPathFindNpc(params); }, onFail: function onFail(code) { if (code == 4) { params.callback && params.callback(); } else if (code == 6) { params.idx++; PLU.goPathFindNpc(params); } else if (code == 0) YFUI.writeToOut("<span style='color:#FFF;'>--你太菜了,放弃吧--</span>"); } }); } else { params.idx++; PLU.goPathFindNpc(params); } }, 100); }, onPathsFail: function onPathsFail(msg) { if (params.count) { params.idx = params.paths.indexOf(params.paths.find(function (e, i) { return i >= params.idx && e.startsWith("jh"); })); if (params.idx < 0) params.idx = 0; setTimeout(function () { PLU.goPathFindNpc(params); }, 500); } else { setTimeout(function () { PLU.execActions("home"); }, 500); YFUI.writeToOut("<span style='color:#FFF;'>--找不到目标NPC!...路径中断--</span>"); } return; } }); }, killXLR: function killXLR($btn) { let btnFlag = PLU.setBtnRed($btn); if (!btnFlag) { PLU.TMP.findDragon = false; return; } $btn.css("background-color", "blue"); var stopFlag = false; YFUI.showInput({ title: "刷小龙人", text: "请输入章节[例1] 1,3-5<br>[例2] 1-15", value: PLU.getCache("XLRpath") || "1-15", onOk: function onOk(val) { PLU.setCache("XLRpath", val); var ways = val.split(",").map(function (v) { var _PLU$YFD$mapsLib$Map; if (String(v).indexOf("-") > 0) { var m = v.split("-"); var start = parseInt(m[0]) - 1; var end = parseInt(m[1]); var paths = []; for (var i = start; i < end; i++) { var path = PLU.YFD.mapsLib.Map[i % PLU.YFD.mapsLib.Map.length].way; paths.push(path); } return paths.join(";"); } else { return (_PLU$YFD$mapsLib$Map = PLU.YFD.mapsLib.Map[parseInt(v) - 1]) === null || _PLU$YFD$mapsLib$Map === void 0 ? void 0 : _PLU$YFD$mapsLib$Map.way; } }).join(";").split(";"); UTIL.addSysListener("meigui", function (b, type, subtype, msg) { if (type == "items" && subtype == "info" && UTIL.filterMsg(b.get("name")) == "玫瑰花" || type == "notice" && subtype == "notify_fail" && msg.indexOf("你的背包里没有这个物品") == 0) { UTIL.delSysListener("meigui"); var meigui = parseInt(b.get("amount")) || 0; if (meigui < 140) { PLU.execActions("#".concat(Math.ceil((140 - meigui) / 10), " shop buy shop28_N_10")); } PLU.goPathFindNpc({ paths: ways, idx: 0, objectNPC: "小龙人", count: 11, callback: function callback() { stopFlag = true; YFUI.writeToOut("<span style='color:yellow;'>=====完成挑战小龙人=====</span>"); PLU.execActions("home"); } }); } }); setTimeout(function (){ PLU.execActions("items get_store /obj/shop/meiguihua;items info meigui hua;") }, 250); }, onNo() { stopFlag = true; PLU.setBtnRed($btn, 0); }, }); }, //================================================================================================ toFindDragon($btn) { let btnFlag = PLU.setBtnRed($btn); if (!btnFlag) { //YFUI.writeToOut("<span style='color:#FFF;'>-------Stop Find Dragon-------</span>") PLU.TMP.findDragon = false; return; } else { let htm = `<div style='margin:0 0 10px 0;'> <span>起始地图: </span> <div style="font-size:12px;display:flex;flex-direction:row;flex-wrap: wrap;justify-content: flex-start;width: 100%;align-content: flex-start;line-height:2;margin-bottom:10px;" > <label style="width:20%"><input type="radio" name="findDragon_start" value="1" checked>1雪亭镇</label> <label style="width:20%"><input type="radio" name="findDragon_start" value="2">2洛阳</label> <label style="width:20%"><input type="radio" name="findDragon_start" value="3">3华山村</label> <label style="width:20%"><input type="radio" name="findDragon_start" value="4">4华山</label> <label style="width:20%"><input type="radio" name="findDragon_start" value="5">5扬州</label> <label style="width:20%"><input type="radio" name="findDragon_start" value="6">6丐帮</label> <label style="width:20%"><input type="radio" name="findDragon_start" value="7">7乔阴县</label> <label style="width:20%"><input type="radio" name="findDragon_start" value="8">8峨眉山</label> <label style="width:20%"><input type="radio" name="findDragon_start" value="9">9恒山</label> <label style="width:20%"><input type="radio" name="findDragon_start" value="10">10武当山</label> <label style="width:20%"><input type="radio" name="findDragon_start" value="11">11晚月庄</label> <label style="width:20%"><input type="radio" name="findDragon_start" value="12">12水烟阁</label> <label style="width:20%"><input type="radio" name="findDragon_start" value="13">13少林寺</label> <label style="width:20%"><input type="radio" name="findDragon_start" value="14">14唐门</label> <label style="width:20%"><input type="radio" name="findDragon_start" value="15">15青城山</label> </div> <span>搜图顺序: </span> <select id="findDragon_SearchOrder" style="font-size:16px;height:30px;width:30%;"> <option selected value="1">顺序</option> <option value="-1">倒序</option> </select> </div>`; YFUI.showPop({ title: "找小龙人", text: htm, width: "400px", okText: "开始", onOk(e) { setTimeout(function () { PLU.execActions("items get_store /obj/shop/meiguihua;items info meigui hua;"); UTIL.addSysListener("meigui", function (b, type, subtype, msg) { if ((type == "items" && subtype == "info" && UTIL.filterMsg(b.get("name")) == "玫瑰花") || (type == "notice" && subtype == "notify_fail" && msg.indexOf("你的背包里没有这个物品") == 0)) { UTIL.delSysListener("meigui"); var meigui = parseInt(b.get("amount")) || 0; if (meigui < 140) { PLU.execActions("#".concat(Math.ceil((140 - meigui) / 10), " shop buy shop28_N_10")); } } }); }, 240); let start = $(e.find('input[name="findDragon_start"]:checked')).val(); let order = Number($('#findDragon_SearchOrder').val()); //YFUI.writeToOut("<span style='color:#FFF;'>-------Find Dragon-------</span>") YFUI.writeToOut(`<span style='color:#FFF;'>--start jh ${start} --search order:${order}</span>`); PLU.findDragonMaps(Number(start), Number(order)); }, onNo() { PLU.setBtnRed($btn); } }); } }, async findDragonMaps(startCity, order){ PLU.TMP.findDragon = true let curCity = startCity, endCity = startCity-order endCity = endCity<1 ? 15 : endCity>15 ? 1 : endCity let isExceedChallenge = false; // Added variable to track if the challenge limit is exceeded do { let jhMap = YFD.mapsLib.Map.find(e=>e.jh==curCity) if(jhMap){ YFUI.writeToOut("<span style='color:#FFF;'>--开始搜索地图 jh "+curCity+"--</span>"); let paths = jhMap.way.split(";") let npcName = '小龙人' let res = await PLU.mapFindNpc(paths, npcName) if(res=='end'){ YFUI.writeToOut("<span style='color:#FFF;'>--任务完成--</span>"); //YFUI.writeToOut("<span style='color:yellow;'>=====完成小龙人=====<span>"); break }else{ curCity = curCity+order curCity = curCity<1 ? 15 : curCity>15 ? 1 : curCity } } } while (curCity!=endCity && PLU.TMP.findDragon); if (!isExceedChallenge) { // Added condition to check if the challenge limit is exceeded YFUI.writeToOut("<span style='color:yellow;'>=====完成小龙人=====<span>"); } //YFUI.writeToOut("<span style='color:#FFF;'>--搜索完成--</span>") PLU.execActions("home") PLU.setBtnRed($("#btn_bt_kg_finddragon"),0) }, async mapFindNpc(paths,NPCName){ return new Promise(async (resolve,reject)=>{ let idx = 0, preIdx = -1, res='' while (idx < paths.length) { try { if(preIdx!=idx) await PLU.stepPath(paths[idx]) } catch (error) { resolve('noway') break } preIdx = idx let fnpc = UTIL.findRoomNpc(NPCName,false,true) if(fnpc){ try { let kiilres = await PLU.toKillNpc(fnpc.key) if(kiilres=='noflower'){ PLU.execActions("shop buy shop28_N_10;shop buy shop28_N_10;") await PLU.waitTime() }else if(kiilres=='next'){ idx++ }else if(kiilres=='ok'){ //idx++ }else{ idx++ } } catch (error) { resolve('end') break } }else{ idx++ } if(!PLU.TMP.findDragon) { res='break';resolve('end');break;} } if(!res) resolve('next') }) }, async stepPath(act){ return new Promise((resolve,reject)=>{ PLU.actions({ paths:[act], idx:0, onPathsEnd(){ setTimeout(()=>{ resolve() },200) }, onPathsFail(){ reject() } }) }) }, async toKillNpc(npcId){ return new Promise((resolve,reject)=>{ PLU.autoFight({ targetKey:npcId, fightKind:'kill', // autoSkill:'fast', onFail(errCode){ if(errCode==9){ resolve("next") } else if(errCode==10){ resolve("noflower") } else if(errCode==11){ reject("end") }else{ resolve(false) } }, onEnd(){ setTimeout(()=>{ resolve('ok') },500) } }) }) }, async waitTime(t=1000){ return new Promise((resolve,reject)=>{ setTimeout(()=>{ resolve() },t) }) }, //================================================================================================ toQueryMiTi: function toQueryMiTi() { var defaultMapId = PLU.getCache("pathFindMiTi") || "1"; var citys = PLU.YFD.cityList.map(function (c, i) { var issel = i + 1 == defaultMapId ? "selected" : ""; return '<option value="' + (i + 1) + '" ' + issel + ">" + c + "</option>"; }).join(""); YFUI.showPop({ title: "全图找谜题", text: '选择地图, 输入关键词(人物,地点,物品)列表(英文逗号隔开)<br>可模糊匹配<br>\n <div style=\'margin:10px 0;\'>\n <span>去哪找: </span>\n <select id="pathFindMap" style="font-size:15px;height:32px;width:81%;border:1px solid #444;">\n '.concat(citys, '\n </select>\n </div>\n <div style=\'margin:10px 0;\'>\n <span>要找啥: </span>\n <input id="pathFindKeyword" value="').concat(PLU.getCache("pathFindKeyword") || "柴绍,李秀宁,大鹳淜洲,天罗紫芳衣", '" style="font-size:14px;height:26px;width:80%;border:1px solid #444;"></input>\n </div>'), onOk: function onOk() { var mapStr = $.trim($("#pathFindMap").val()), KeywordStr = $.trim($("#pathFindKeyword").val()); if (!KeywordStr) return; PLU.setCache("pathFindMap", mapStr); PLU.setCache("pathFindKeyword", KeywordStr); var jhMap = PLU.YFD.mapsLib.Map[parseInt(mapStr) - 1]; if (!jhMap) { return YFUI.writeToOut("<span style='color:#F66;'>---无地图数据---</span>"); } else { var ways = jhMap.way.split(";"); console.log({ paths: ways, idx: 0, objectKeyword: KeywordStr }); PLU.MiTiArray = []; PLU.goPathFindMiTi({ paths: ways, idx: 0, objectKeyword: KeywordStr }); } }, onNo: function onNo() { } }); }, goPathFindMiTi: function goPathFindMiTi(params) { //goFindYouxia if (params.idx >= params.paths.length) { setTimeout(function () { PLU.execActions("home"); }, 100); YFUI.writeToOut("<span style='color:#FFF;'>--找不到目标谜题!...已搜索完地图--</span>"); return; } var acs = [params.paths[params.idx]]; PLU.actions({ paths: acs, idx: 0, onPathsEnd: function onPathsEnd() { var npcArray = UTIL.getRoomAllNpc(); UTIL.addSysListener("MiTi", function (b, type, subtype, msg) { if (type != "main_msg") return; if (msg.match(params.objectKeyword)) PLU.MiTiArray.push(msg); }); var _iterator5 = _createForOfIteratorHelper(npcArray), _step5; try { for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { var npc = _step5.value; PLU.execActions("auto_tasks cancel;ask " + npc.key); } } catch (err) { _iterator5.e(err); } finally { _iterator5.f(); } UTIL.delSysListener("MiTi"); if (PLU.MiTiArray.length) { YFUI.writeToOut("<span style='color:#FFF;'>--目标谜题已找到--</span>"); return; } else { setTimeout(function () { params.idx++; PLU.goPathFindMiTi(params); }, 500); } }, onPathsFail: function onPathsFail() { setTimeout(function () { PLU.execActions("home"); }, 500); YFUI.writeToOut("<span style='color:#FFF;'>--路径中断--</span>"); return; } }); }, //================================================================================================ goNpcWay: function goNpcWay(desc, way) { var goList = PLU.getCache("prevQueryList") || []; var newList = goList.filter(function (e) { return e.desc != desc; }); var len = newList.unshift({ desc: desc, way: way }); if (len > 10) newList.length = 10; PLU.setCache("prevQueryList", newList); PLU.execActions(way); }, //================================================================================================ showNpcWay: function showNpcWay(desc, way) { var text = "<span style='color:blue;background:rgba(255,255,244,0.8);padding:1px 10px;display:inline-block;word-break:break-all;'>" + way + "</span></br>"; var way2 = PLU.linkPath(PLU.queryRoomPath(), way); var way3 = PLU.minPath(PLU.queryRoomPath(), way); if (way != way2) { text += "<span style='color:blue;background:rgba(255,255,244,0.8);padding:1px 10px;display:inline-block;word-break:break-all;'>同图路径(?):" + way2 + "</span></br>"; text += "<span style='color:blue;background:rgba(255,255,244,0.8);padding:1px 10px;display:inline-block;word-break:break-all;'>最短路径(?):" + way3 + "</span></br>"; } YFUI.showPop({ title: "路径详情:" + desc, text: text, autoOk: 10, okText: "关闭", noText: "前往", onOk: function onOk() { }, onNo: function onNo() { PLU.goNpcWay(desc, way); } }); }, //================================================================================================ toQueryHistory: function toQueryHistory() { var prevList = PLU.getCache("prevQueryList") || []; if (prevList.length == 0) return YFUI.writeToOut("<span style='color:#F66;'>---无历史数据---</span>"); for (var i = prevList.length - 1; i >= 0; i--) { var e = prevList[i]; YFUI.writeToOut("<span><a style='text-decoration:underline;color:yellow;cursor:pointer;' onclick='PLU.goNpcWay(\"" + e.desc + '","' + e.way + "\")'>" + e.desc + "</a> <a style='text-decoration:underline;color:yellow;cursor:pointer;' onclick='PLU.showNpcWay(\"" + e.desc + '","' + e.way + "\")'>路径详情</a></span>"); } YFUI.writeToOut("<span>----------</span>"); }, //================================================================================================ showMPFZ: function showMPFZ($btn) { var btnFlag = PLU.setBtnRed($btn); if (!btnFlag) { $("#topMonitor").hide(); $("#btn_bt_showMPFZ").text("纷争显示"); PLU.setCache("showTopMonitor", 0); return; } $("#topMonitor").show(); $("#btn_bt_showMPFZ").text("纷争隐藏"); PLU.setCache("showTopMonitor", 1); }, //================================================================================================ openCombineGem: function openCombineGem() { var htm = "<div>"; PLU.YFD.gemType.forEach(function (t, ti) { htm += "<div>"; PLU.YFD.gemPrefix.forEach(function (p, pi) { if (pi > 2) htm += '<button onclick="PLU.combineGem(' + ti + "," + pi + ')" style="color:' + t.color + ';width:18%;margin:2px 1%;padding:3px;">' + (p.substr(0, 2) + t.name.substr(0, 1)) + "</button>"; }); htm += "</div>"; }); htm += "</div>"; htm += '<div style="margin:10px 0 0 3px;position:absolute;left:15px;bottom:10px;">每次连续合成最多 <input id="maxCombine" type="number" value="1" style="width:50px;height:25px;line-height:25px;" maxlength="3" min=1 max=9999 oninput="if(value.length>4)value=value.substr(0,4)"/> 颗宝石。</div>'; YFUI.showPop({ title: "合成宝石", text: htm, width: "382px", okText: "关闭", onOk: function onOk() { } }); }, //================================================================================================ combineGem: function combineGem(type, grade) { if (PLU.TMP.combineTooFast) return YFUI.writeToOut("<span style='color:#F66;'>--点击不要太快!--</span>"); PLU.TMP.combineTooFast = setTimeout(function () { PLU.TMP.combineTooFast = null; }, 600000); var targetNum = parseInt($("#maxCombine").val()) || 1; var getNum = 0; var countString = function countString(combineNum, gemCode) { var combineStr = ""; if (combineNum % 3 != 0) return ""; combineStr += "items hecheng " + gemCode + "_N_" + Math.floor(combineNum / 3) + ";"; return combineStr; }; var needGem = function needGem(gemGrade, needNum, gemList) { var _objGem$num; if (gemGrade < 0) return null; var gemName = PLU.YFD.gemPrefix[gemGrade] + PLU.YFD.gemType[type].name; var gemCode = PLU.YFD.gemType[type].key + "" + (gemGrade + 1); var objGem = gemList.find(function (e) { return e.name == gemName; }); var gemNum = (_objGem$num = objGem === null || objGem === void 0 ? void 0 : objGem.num) !== null && _objGem$num !== void 0 ? _objGem$num : 0; if (gemNum >= needNum) { return countString(needNum, gemCode); } else { var dtNum = needNum - gemNum; var next = needGem(gemGrade - 1, 3 * dtNum, gemList); if (next) return next + countString(needNum, gemCode); return null; } }; var countCombine = function countCombine(cb) { PLU.getGemList(function (gemList) { var runStr = needGem(grade - 1, 3, gemList); if (runStr) { PLU.fastExec(runStr + "items", function () { YFUI.writeToOut("<span style='color:white;'>==合成宝石x1==</span>"); getNum++; targetNum--; if (targetNum > 0) { countCombine(function () { cb && cb(true); }); } else { cb && cb(true); } }); } else { YFUI.writeToOut("<span style='color:#F66;'>--没有足够的宝石!--</span>"); cb && cb(false); } }); }; countCombine(function (end) { clearTimeout(PLU.TMP.combineTooFast); PLU.TMP.combineTooFast = null; YFUI.writeToOut("<span style='color:white;'>==合成宝石结束! 得到宝石x" + getNum + "==</span>"); }); }, //================================================================================================ getGemList: function getGemList(callback) { var getItemsTimeOut = setTimeout(function () { UTIL.delSysListener("getListItems"); }, 5000); UTIL.addSysListener("getListItems", function (b, type, subtype, msg) { if (type != "items" || subtype != "list") return; UTIL.delSysListener("getListItems"); clearTimeout(getItemsTimeOut); //clickButton("prev"); var iId = 1, itemList = []; while (b.get("items" + iId)) { var it = UTIL.filterMsg(b.get("items" + iId)).split(","); if (it && it.length > 4 && it[3] == "0" && it[1].match("宝石")) itemList.push({ key: it[0], name: it[1], num: Number(it[2]) }); iId++; } callback && callback(itemList); }); clickButton("items", 0); }, //================================================================================================ getAllItems: function getAllItems(callback) { var getItemsTimeOut = setTimeout(function () { UTIL.delSysListener("getListItems"); }, 5000); UTIL.addSysListener("getListItems", function (b, type, subtype, msg) { if (type != "items" || subtype != "list") return; UTIL.delSysListener("getListItems"); clearTimeout(getItemsTimeOut); clickButton("prev"); var iId = 1, itemList = []; while (b.get("items" + iId)) { var it = UTIL.filterMsg(b.get("items" + iId)).split(","); if (it && it.length > 4) itemList.push({ key: it[0], name: it[1], num: Number(it[2]), equipped: it[3] == "0" }); iId++; } callback && callback(itemList); }); clickButton("items", 0); }, //================================================================================================ profileSetting() { if (!this.pSettingMaps) this.initpSettingMaps(); let ckeds = PLU.getCache("pSettingArray")?.split(",") || this.pSettingMaps.map((e, i) => i); let htm = '<div style="display:flex;flex-direction:row;flex-wrap: wrap;justify-content: space-between;width: 100%;align-content: flex-start;line-height:2;">'; this.pSettingMaps.forEach((e, i) => { if (!e.n) htm += '<span style="width:92px;"> </span>'; else htm += `<span><label data-id="${i}" style="font-size:13px;margin:0 3px 5px 0;">${e.n}<input type="checkbox" name="pSettingId" value="${i}" ${ckeds.includes(i + "") || e.f ? "checked" : ""} ${e.f ? "disabled" : ""} /></label></span>`; }); YFUI.showPop({ title: "个人设置", text: htm, width: "260px", okText: "完成", onOk(e) { let checkeds = []; e.find('input[name="pSettingId"]:checked').each((i, b) => { checkeds.push(b.value); }); PLU.setCache("pSettingArray", checkeds.join(",")); PLU.saveSetting(checkeds); console.log(checkeds); }, onNo() { }, afterOpen($el) { $el.find(".pSettingAll").click((e) => { $el.find('input[name="pSettingId"]').each(function () { $(this).prop("checked", true); }); }); }, }); }, //================================================================================================ saveSetting(checkeds) { for (let psid in PLU.pSettingMaps) { let pSettingD = PLU.pSettingMaps[psid]; let pms = (checkeds.includes(psid)) ? "true" : "false"; PLU.setCache("pSetting_" + pSettingD.n, pms); console.log(PLU.getCache("pSetting_" + pSettingD.n)) } }, //================================================================================================ initpSettingMaps() { let _this = this; this.pSettingMaps = [ { n: "快速连招", }, ]; }, //================================================================================================ backupSetting: function backupSetting() { var config = {}; config.GM = GM_info; config.GM.scriptMetaStr = undefined; config.GM.script.header = undefined; config.PLU = {}; config.PLU.CACHE = UTIL.getMem("CACHE"); config.PLU.HISTORY = UTIL.getMem("HISTORY"); config.PLU.STATUS = PLU.STATUS; config.PLU.TMP = PLU.TMP; var reader = new FileReader(); reader.readAsDataURL(new Blob([JSON.stringify(config)], { type: "application/json" })); reader.onload = function (e) { var a = document.createElement("a"); a.download = "无剑配置_" + PLU.nickName + "_" + PLU.accId + "_" + new Date().getTime() + ".json"; a.style.display = "none"; a.href = reader.result; a.click(); }; }, //================================================================================================ loadSetting: function loadSetting() { var input = document.createElement("input"); input.type = "file"; input.id = "config"; input.accept = "application/json"; input.style.display = "none"; input.onchange = function () { var reader = new FileReader(); reader.readAsText(input.files[0]); reader.onload = function (e) { var config = JSON.parse(reader.result); UTIL.setMem("CACHE", config.PLU.CACHE); UTIL.setMem("HISTORY", config.PLU.HISTORY); PLU.initStorage(); PLU.TMP = config.PLU.TMP; PLU.STATUS = config.PLU.STATUS; YFUI.writeToOut("<span style='color:yellow;'>====加载完成====</span>"); }; }; input.click(); } }; //================================================================================= // UTIL模块 //================================================================================= unsafeWindow.UTIL = { //================ accId: null, sysListeners: {}, logHistory: [], //================ getUrlParam: function getUrlParam(key) { var res = null, au = location.search.split("?"), sts = au[au.length - 1].split("&"); sts.forEach(function (p) { if (p.split("=").length > 1 && key == p.split("=")[0]) res = unescape(p.split("=")[1]); }); return res; }, getAccId: function getAccId() { this.accId = this.getUrlParam("id"); return this.accId; }, setMem: function setMem(key, data) { localStorage.setItem("PLU_" + this.accId + "_" + key, data); }, getMem: function getMem(key) { return localStorage.getItem("PLU_" + this.accId + "_" + key); }, rnd: function rnd() { return Math.floor(Math.random() * 1000000); }, getuuid: function getuuid() { return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) { var r = Math.random() * 16 | 0, v = c == "x" ? r : r & 0x3 | 0x8; return v.toString(16); }); }, getNow: function getNow(timestamp) { var date = timestamp ? new Date(timestamp) : new Date(); var Y = date.getFullYear(); var M = (date.getMonth() + 1 + "").padStart(2, "0"); var D = (date.getDate() + "").padStart(2, "0"); var h = (date.getHours() + "").padStart(2, "0"); var m = (date.getMinutes() + "").padStart(2, "0"); var s = (date.getSeconds() + "").padStart(2, "0"); return M + "-" + D + " " + h + ":" + m + ":" + s; }, log: function log(_ref5) { var msg = _ref5.msg, type = _ref5.type, time = _ref5.time, isHistory = _ref5.isHistory; var style = "color:#333"; if (type == "TF") { var co = msg.match("夜魔") ? "#F0F" : "#666"; style = "color:" + co; } else if (type == "QL") { style = "color:#00F"; } else if (type == "MPFZ") { style = "color:#F60"; } else if (type == "LPFZ") { style = "color:#033"; } else if (type == "KFQL") { style = "color:#F00;background:#FF9;"; } else if (type == "YX") { var co2 = msg.match("宗师】") ? "#00F" : msg.match("侠客】") ? "#08F" : msg.match("魔尊】") ? "#F00" : msg.match("邪武】") ? "#F80" : "#999"; style = "color:" + co2 + ";background:#CFC;"; } else if (type == "BF") { style = "color:#FFF;background:#93C;"; } else if (type == "TIPS") { style = "color:#29F"; } //console.log('%c%s',style,this.getNow(time)+msg) if (!isHistory) { this.logHistory.push({ msg: msg, type: type, time: time }); this.setMem("HISTORY", JSON.stringify(this.logHistory)); } var evt = new Event("addLog"); evt.ext = { msg: msg, type: type, time: time, style: style }; document.dispatchEvent(evt); }, filterMsg: function filterMsg(s) { if (typeof s == "string") return s.replace(/[\033|\27|\0x1b]\[[0-9|;]+m/gi, ""); return ""; }, sysDispatchMsg: function sysDispatchMsg(b, type, subtype, msg) { for (var key in this.sysListeners) { this.sysListeners[key](b, type, subtype, msg); } }, addSysListener: function addSysListener(key, fn) { this.sysListeners[key] = fn; }, delSysListener: function delSysListener(key) { delete this.sysListeners[key]; }, findRoomNpc: function findRoomNpc(npcName, gb, searchAll) { console.debug(npcName); var roomInfo = g_obj_map.get("msg_room"); if (!roomInfo) return null; for (var i = roomInfo.elements.length - 1; i >= 0; i--) { var bNpc = this.getSpNpcByIdx(roomInfo, i, searchAll); if (bNpc && bNpc.name == npcName) { if (!gb) return bNpc; else { var gNpc = this.getSpNpcByIdx(roomInfo, i - 1); if (gNpc) return gNpc; } } } return null; }, roomHasNpc: function roomHasNpc() { var roomInfo = g_obj_map.get("msg_room"); var res = false; if (!roomInfo) return null; for (var i = roomInfo.elements.length - 1; i >= 0; i--) { if (roomInfo.elements[i].key.match("npc")) { res = true; break; } } return res; }, getRoomAllNpc: function getRoomAllNpc() { var roomInfo = g_obj_map.get("msg_room"); var res = []; if (!roomInfo) return res; for (var i = roomInfo.elements.length - 1; i >= 0; i--) { var npc = roomInfo.elements[i].key.match(/npc(\d+)/); if (npc) { var infoArr = roomInfo.elements[i].value.split(","); var name = this.filterMsg(infoArr[1]); res.push({ name: name, key: infoArr[0] }); } } return res; }, findRoomNpcReg: function findRoomNpcReg(npcName) { var roomInfo = g_obj_map.get("msg_room"); if (!roomInfo) return null; for (var i = roomInfo.elements.length - 1; i >= 0; i--) { var npc = roomInfo.elements[i].key.match(/npc(\d+)/); if (npc) { var infoArr = roomInfo.elements[i].value.split(","); var name = this.filterMsg(infoArr[1]); if (name.match(npcName)) return { name: name, key: infoArr[0] }; } } return null; }, getSpNpcByIdx: function getSpNpcByIdx(roomInfo, idx, searchAll) { var npcInfo = roomInfo.get("npc" + idx); if (npcInfo) { var infoArr = npcInfo.split(","); var name = this.filterMsg(infoArr[1]); if (searchAll) return { name: name, key: infoArr[0] }; if (name != infoArr[1]) return { name: name, key: infoArr[0] }; } return null; }, getItemFrom: function getItemFrom(name) { var _g_obj_map$get7; if (g_gmain.is_fighting) return; var item = (_g_obj_map$get7 = g_obj_map.get("msg_room")) === null || _g_obj_map$get7 === void 0 ? void 0 : _g_obj_map$get7.elements.find(function (it) { return it.key.substring(0, 4) == "item" && it.value.indexOf(name) >= 0; }); if (item) { clickButton("get " + item.value.split(",")[0]); } }, inHome: function inHome() { return gSocketMsg._is_in_home; } }; //================================================================================= // UI模块 //================================================================================= unsafeWindow.YFUI = { init: function init() { var maxW = $("#out").width() > 634 ? 634 : $("#out").width(); console.log($("#page").width(), $("#out").width()); var rightStyle = $("#page").width() - $("#out").width() > 4 ? "left:" + (maxW - 76 + 4) + "px;" : "right:0;"; this.$Panel = $('<div id="WJPlug_Panel" style="pointer-events:none;position:absolute;z-index:9999;' + rightStyle + ';top:5.5%;font-size:12px;line-height:1.2;text-align:right;list-style:none;">'); $("body").append(this.$Panel); }, addBtnGroup: function addBtnGroup(_ref6) { var id = _ref6.id, style = _ref6.style; var $box = $('<div id="' + id + '" style="position:relative;"></div>'); style && $box.css(style); this.$Panel.append($box); return $box; }, addBtn: function addBtn(_ref7) { var id = _ref7.id, groupId = _ref7.groupId, text = _ref7.text, onclick = _ref7.onclick, style = _ref7.style, boxStyle = _ref7.boxStyle, extend = _ref7.extend, children = _ref7.children, canSet = _ref7.canSet; var $box = $('<div id="' + id + '" class="btn-box" style="position:relative;pointer-events:auto;"></div>'); var $btn = $('<button id="btn_' + id + '" style="padding:4px 2px;box-sizing:content-box;margin:1px 1px;border:1px solid #333;border-radius:4px;width:68px;">' + text + "</button>"); style && $btn.css(style); boxStyle && $box.css(boxStyle); $btn.$extend = extend; $btn.click(function (e) { onclick && onclick($btn, $box); }); $box.append($btn); if (children) $box.append($('<b style="position:absolute;left:1px;top:3px;font-size:12px;">≡</b>')); if (canSet) { var $setbtn = $('<i style="position:absolute;right:-8px;top:2px;font-size:14px;background:#333;color:#fff;font-style:normal;;line-height:1;border:1px solid #CCC;border-radius:100%;padding:2px 6px;cursor:pointer;">S</i>'); $box.append($setbtn); $setbtn.click(function (e) { onclick && onclick($btn, $box, "setting"); }); } groupId ? $("#" + groupId).append($box) : this.$Panel.append($box); $box.$button = $btn; return $box; }, addMenu: function addMenu(_ref8) { var id = _ref8.id, groupId = _ref8.groupId, text = _ref8.text, extend = _ref8.extend, style = _ref8.style, menuStyle = _ref8.menuStyle, multiCol = _ref8.multiCol, onclick = _ref8.onclick, children = _ref8.children; //{text,id,btnId} var $btnBox = this.addBtn({ id: id, groupId: groupId, text: text, extend: extend, style: style, children: children }), _this = this; function addMenuToBtn(_ref9) { var btnId = _ref9.btnId, $parent = _ref9.$parent, list = _ref9.list, menuStyle = _ref9.menuStyle; var $listBox = $('<div id="menu_' + btnId + '" class="menu" style="position:absolute;top:0;right:' + $parent.width() + 'px;display:none;"></div>'); $parent.append($listBox); list && list.forEach(function (sub) { var btnOpt = Object.assign({}, sub, { groupId: "menu_" + btnId }); if (!btnOpt.onclick) { btnOpt.onclick = onclick; } if (multiCol) btnOpt.boxStyle = Object.assign({}, { display: "inline-block" }, btnOpt.boxStyle); var $subBtnBox = _this.addBtn(btnOpt); if (sub.children) $subBtnBox.$list = addMenuToBtn({ btnId: sub.id, $parent: $subBtnBox, list: sub.children, menuStyle: sub.menuStyle }); }); $parent.$button.click(function (e) { $listBox.toggle().css({ right: $parent.width() + 5 }); menuStyle && $listBox.css(menuStyle); $listBox.is(":visible") && $listBox.parent().siblings(".btn-box").find(".menu").hide(); onclick && onclick($parent.$button, $parent); }); return $listBox; } $btnBox.$list = addMenuToBtn({ btnId: id, $parent: $btnBox, list: children, menuStyle: menuStyle }); return $btnBox; }, showPop: function showPop(params) { if ($("#myTools_popup").length) $("#myTools_popup").remove(); params = params || {}; var okText = params.okText || "确定", noText = params.noText || "取消", _this = this; _this.SI_autoOk && clearInterval(_this.SI_autoOk); _this.SI_autoOk = null; var ph = '<div style="z-index:9999;position:fixed;top: 40%;left:50%;width:100%;height:0;font-size:14px;" id="myTools_popup">\n <div class="popup-content" style="width:'.concat(params.width || "70%", ';max-width:512px;background: rgba(255,255,255,.8);border:1px solid #999999;border-radius: 10px;transform: translate(-50%,-50%) scale(.1,.1);transition:all .1s;">\n <div style="padding: 10px 15px;"><span style="font-weight:700;">').concat(params.title || "", '</span><span style="float:right;color:#666;cursor:pointer;" class="btncl">✖</span></div>\n <div style="padding: 0 15px;line-height:1.5;max-height:500px;overflow-y:auto;">').concat(params.text || "", '</div>\n <div style="text-align:right;padding: 10px;">'); if (params.onNo) ph += '<button style="margin-right: 15px;padding: 5px 20px;border: 1px solid #000;border-radius:5px;" class="btnno">'.concat(noText, "</button>"); ph += '<button style="padding: 5px 20px;background-color: #963;color:#FFF;border: 1px solid #000;border-radius: 5px;" class="btnok">'.concat(okText, "</button>\n </div></div></div>"); var $ph = $(ph); $("body").append($ph); setTimeout(function () { $ph.find(".popup-content").css({ transform: "translate(-50%,-50%) scale(1,1)" }); params.afterOpen && params.afterOpen($ph); }, 100); if (params.autoOk) { var autoCloseN = Number(params.autoOk); $("#myTools_popup .btnok").text(okText + "(" + autoCloseN + "s)"); _this.SI_autoOk = setInterval(function () { autoCloseN--; $("#myTools_popup .btnok").text(okText + "(" + autoCloseN + "s)"); if (autoCloseN < 1) { $ph.find(".btnok").click(); } }, 1000); } else if (params.autoNo) { var _autoCloseN = Number(params.autoNo); $("#myTools_popup .btnno").text(noText + "(" + _autoCloseN + "s)"); _this.SI_autoOk = setInterval(function () { _autoCloseN--; $("#myTools_popup .btnno").text(noText + "(" + _autoCloseN + "s)"); if (_autoCloseN < 1) { $ph.find(".btnno").click(); } }, 1000); } $ph.find(".btncl").click(function (e) { _this.SI_autoOk && clearInterval(_this.SI_autoOk); params.onX && params.onX(); $ph.remove(); }); $ph.find(".btnno").click(function (e) { _this.SI_autoOk && clearInterval(_this.SI_autoOk); params.onNo && params.onNo(); $ph.remove(); }); $ph.find(".btnok").click(function (e) { _this.SI_autoOk && clearInterval(_this.SI_autoOk); params.onOk && params.onOk($ph); $ph.remove(); }); }, showInput: function showInput(params) { var popParams = Object.assign({}, params); var inpstyle = "font-size:14px;line-height:1.5;width:100%;padding:5px;border:1px solid #999;border-radius:5px;margin:5px 0;outline:none;box-sizing:border-box;"; if (params.inputs && params.inputs.length > 1) { for (var i = 0; i < params.inputs.length; i++) { var val = params.value[i] || ""; popParams.text += '<div><div style="width:20%;float:left;margin:5px 0;line-height:2;text-align:right;">'.concat(params.inputs[i], ': </div><div style="width:73%;margin-left:21%;">'); popParams.text += params.type == "textarea" ? '<textarea id="myTools_popup_input_'.concat(i, '" rows="4" style="').concat(inpstyle, '">').concat(val, "</textarea></div></div>") : '<input id="myTools_popup_input_'.concat(i, '" type="text" value="').concat(val, '" style="').concat(inpstyle, '"/></div></div>'); } popParams.onOk = function () { var val = []; for (var _i2 = 0; _i2 < params.inputs.length; _i2++) { val.push($("#myTools_popup_input_" + _i2).val()); } params.onOk(val); }; } else { popParams.text += params.type == "textarea" ? '<div><textarea id="myTools_popup_input" rows="4" style="'.concat(inpstyle, '">').concat(params.value || "", "</textarea></div>") : '<div><input id="myTools_popup_input" type="text" value="'.concat(params.value || "", '" style="').concat(inpstyle, '"/></div>'); popParams.onOk = function () { var val = $("#myTools_popup_input").val(); params.onOk(val); }; } this.showPop(popParams); }, showInfoPanel: function showInfoPanel(params) { if ($("#myTools_InfoPanel").length) $("#myTools_InfoPanel").remove(); params = params || {}; var okText = params.okText || "关闭", noText = params.noText || "清空", _this = this; var $ph = $('<div style="z-index:9900;position:fixed;top:10%;left:0;width:100%;height:0;font-size:12px;" id="myTools_InfoPanel">\n <div class="infoPanel-content" style="width:'.concat(params.width || "75%", ';max-width:512px;height:620px;background: rgba(255,255,255,.9);border:1px solid #999;border-radius:0 10px 10px 0;transform: translate(-100%,0);transition:all .1s;">\n <div style="padding: 10px 15px;"><span style="font-weight:700;">').concat(params.title || "", '</span><span style="float:right;color:#666;cursor:pointer;" class="btncl">✖</span></div>\n <div style="padding: 0 15px;line-height:1.5;height:550px;overflow-y:auto;" class="infoPanel-wrap">').concat(params.text || "", '</div>\n <div style="text-align:right;padding: 10px;">\n <button style="padding: 5px 20px;background-color: #969;color:#FFF;border: 1px solid #000;border-radius: 5px;margin-right:25px;" class="btnno">').concat(noText, '</button>\n <button style="padding: 5px 20px;background-color: #963;color:#FFF;border: 1px solid #000;border-radius: 5px;" class="btnok">').concat(okText, "</button>\n </div>\n </div></div>")); $("body").append($ph); setTimeout(function () { $ph.find(".infoPanel-content").css({ transform: "translate(0,0)" }); params.onOpen && params.onOpen(); }, 100); $ph.find(".btncl").click(function (e) { params.onClose && params.onClose(); $ph.remove(); }); $ph.find(".btnok").click(function (e) { params.onOk && params.onOk(); params.onClose && params.onClose(); $ph.remove(); }); $ph.find(".btnno").click(function (e) { params.onNo && params.onNo(); }); return $ph; }, writeToOut: function writeToOut(html) { var m = new unsafeWindow.Map(); m.put("type", "main_msg"); m.put("subtype", "html"); m.put("msg", html); gSocketMsg.dispatchMessage(m); } }; if (GM_info.script.name != "无剑Mud辅修(OL)") { PLU.version = GM_info.script.version; unsafeWindow.init(); } else GM_xmlhttpRequest({ method: "GET", responseType: "json", url: "https://updategreasyfork.deno.dev/scripts/483658.json?t=".concat(Date.now()), nocache: true, onload: function onload(res) { PLU.version = JSON.parse(res.responseText)["version"]; if (!unsafeWindow.customMode) unsafeWindow.init(); } });