Skrip ini tidak untuk dipasang secara langsung. Ini adalah pustaka skrip lain untuk disertakan dengan direktif meta // @require https://update.greasyfork.org/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 update.greasyfork.org
// @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://update.greasyfork.org/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://update.greasyfork.org/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();
}
});