wsmud_pluginss

武神传说 MUD 武神脚本 武神传说 脚本 qq群367657589

  1. // ==UserScript==
  2. // @name wsmud_pluginss
  3. // @namespace cqv1
  4. // @version 0.0.32.301
  5. // @date 01/07/2018
  6. // @modified 07/03/2024
  7. // @homepage https://greasyfork.org/zh-CN/scripts/371372
  8. // @description 武神传说 MUD 武神脚本 武神传说 脚本 qq群367657589
  9. // @author fjcqv(源程序) & zhzhwcn(提供websocket监听)& knva(做了一些微小的贡献) &Bob.cn(raid.js作者)
  10. // @match http://*.wsmud.com/*
  11. // @match http://*.wamud.com/*
  12. // @run-at document-start
  13. // @require https://s4.zstatic.net/ajax/libs/vue/2.2.2/vue.min.js
  14. // @require https://s4.zstatic.net/ajax/libs/jquery/3.3.1/jquery.min.js
  15. // @require https://s4.zstatic.net/ajax/libs/store.js/2.0.12/store.modern.min.js
  16. // @require https://s4.zstatic.net/ajax/libs/jquery-contextmenu/3.0.0-beta.2/jquery.contextMenu.min.js
  17. // @grant unsafeWindow
  18. // @grant GM_addStyle
  19. // @grant GM_getValue
  20. // @grant GM_setValue
  21. // @grant GM_listValues
  22. // @grant GM_setClipboard
  23. // @grant GM_deleteValue
  24. // @grant GM_registerMenuCommand
  25.  
  26. // ==/UserScript==
  27.  
  28. (function () {
  29. 'use strict';
  30. Array.prototype.baoremove = function (dx) {
  31. if (isNaN(dx) || dx > this.length) {
  32. return false;
  33. }
  34. this.splice(dx, 1);
  35. };
  36. Array.prototype.remove = function (val) {
  37. var index = this.indexOf(val);
  38. if (index > -1) {
  39. this.splice(index, 1);
  40. }
  41. };
  42. String.prototype.replaceAll = function (s1, s2) {
  43. return this.replace(new RegExp(s1, "gm"), s2);
  44. };
  45. var copyToClipboard = function (text) {
  46. var textarea = document.createElement('textarea');
  47. textarea.value = text;
  48. document.body.appendChild(textarea);
  49. textarea.select();
  50.  
  51. document.execCommand("Copy");
  52. textarea.parentNode.removeChild(textarea);
  53. };
  54. function dateFormat(fmt, date) {
  55. let ret;
  56. const opt = {
  57. "Y+": date.getFullYear().toString(), // 年
  58. "m+": (date.getMonth() + 1).toString(), // 月
  59. "d+": date.getDate().toString(), // 日
  60. "H+": date.getHours().toString(), // 时
  61. "M+": date.getMinutes().toString(), // 分
  62. "S+": date.getSeconds().toString() // 秒
  63. // 有其他格式化字符需求可以继续添加,必须转化成字符串
  64. };
  65. for (let k in opt) {
  66. ret = new RegExp("(" + k + ")").exec(fmt);
  67. if (ret) {
  68. fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
  69. };
  70. };
  71. return fmt;
  72. }
  73.  
  74. //滚动 -- fork from Suqing funny ---------------fixed
  75. function AutoScroll(name) {
  76. if (name) {
  77. if ($(name).length != 0) {
  78. let scrollTop = $(name)[0].scrollTop;
  79. let scrollHeight = $(name)[0].scrollHeight;
  80. let height = Math.ceil($(name).height());
  81. if (scrollTop < scrollHeight - height) {
  82. let add = (scrollHeight - height < 120) ? 1 : Math.ceil((scrollHeight - height) / 120);
  83. $(name)[0].scrollTop = scrollTop + add;
  84. setTimeout(function () {
  85. AutoScroll(name);
  86. }, 1000 / 120);
  87. }
  88. }
  89. }
  90. }
  91.  
  92.  
  93. /**
  94. * 为数字加上单位:万或亿
  95. *
  96. * 例如:
  97. * 1000.01 => 1000.01
  98. * 10000 => 1万
  99. * 99000 => 9.9万
  100. * 566000 => 56.6万
  101. * 5660000 => 566万
  102. * 44440000 => 4444万
  103. * 11111000 => 1111.1万
  104. * 444400000 => 4.44亿
  105. * 40000000,00000000,00000000 => 4000万亿亿
  106. * 4,00000000,00000000,00000000 => 4亿亿亿
  107. *
  108. * @param {number} number 输入数字.
  109. * @param {number} decimalDigit 小数点后最多位数,默认为2
  110. * @return {string} 加上单位后的数字
  111. */
  112.  
  113. function addWan(integer, number, mutiple, decimalDigit) {
  114.  
  115. var digit = getDigit(integer);
  116. if (digit > 3) {
  117. var remainder = digit % 8;
  118. if (remainder >= 5) { // ‘十万’、‘百万’、‘千万’显示为‘万’
  119. remainder = 4;
  120. }
  121. return Math.round(number / Math.pow(10, remainder + mutiple - decimalDigit)) / Math.pow(10, decimalDigit) + '万';
  122. } else {
  123. return Math.round(number / Math.pow(10, mutiple - decimalDigit)) / Math.pow(10, decimalDigit);
  124. }
  125. }
  126. function getDigit(integer) {
  127. var digit = -1;
  128. while (integer >= 1) {
  129. digit++;
  130. integer = integer / 10;
  131. }
  132. return digit;
  133. }
  134. function addChineseUnit(number, decimalDigit) {
  135.  
  136. decimalDigit = decimalDigit == null ? 2 : decimalDigit;
  137. var integer = Math.floor(number);
  138. var digit = getDigit(integer);
  139. // ['个', '十', '百', '千', '万', '十万', '百万', '千万'];
  140. var unit = [];
  141. if (digit > 3) {
  142. var multiple = Math.floor(digit / 8);
  143. if (multiple >= 1) {
  144. var tmp = Math.round(integer / Math.pow(10, 8 * multiple));
  145. unit.push(addWan(tmp, number, 8 * multiple, decimalDigit));
  146. for (var i = 0; i < multiple; i++) {
  147. unit.push('亿');
  148. }
  149. return unit.join('');
  150. } else {
  151. return addWan(integer, number, 0, decimalDigit);
  152. }
  153. } else {
  154. return number;
  155. }
  156. }
  157. function getQueryVariable(variable) {
  158. var query = window.location.search.substring(1);
  159. var vars = query.split("&");
  160. for (var i = 0; i < vars.length; i++) {
  161. var pair = vars[i].split("=");
  162. if (pair[0] == variable) { return pair[1]; }
  163. }
  164. return (false);
  165. }
  166. var CanUse = false;
  167. if (WebSocket) {
  168. console.log('插件可正常运行,Plugins can run normally');
  169. CanUse = true;
  170. function show_msg(msg) {
  171. ws_on_message({
  172. type: "text",
  173. data: msg
  174. });
  175. }
  176. var _ws = WebSocket,
  177. ws, ws_on_message;
  178. unsafeWindow.WebSocket = function (uri) {
  179. ws = new _ws(uri);
  180. //document.getElementsByClassName("signinfo")[0].innerHTML = "<HIR>武神传说SS插件正常运行! QQ群 367657589</HIR>"
  181. //$('.signinfo').on('click', function () {
  182. // ProConsole.init();
  183. //});
  184. };
  185. unsafeWindow.WebSocket.prototype = {
  186. CONNECTING: _ws.CONNECTING,
  187. OPEN: _ws.OPEN,
  188. CLOSING: _ws.CLOSING,
  189. CLOSED: _ws.CLOSED,
  190. get url() {
  191. return ws.url;
  192. },
  193. get protocol() {
  194. return ws.protocol;
  195. },
  196. get readyState() {
  197. return ws.readyState;
  198. },
  199. get bufferedAmount() {
  200. return ws.bufferedAmount;
  201. },
  202. get extensions() {
  203. return ws.extensions;
  204. },
  205. get binaryType() {
  206. return ws.binaryType;
  207. },
  208. set binaryType(t) {
  209. ws.binaryType = t;
  210. },
  211. get onopen() {
  212. return ws.onopen;
  213. },
  214. set onopen(fn) {
  215. ws.onopen = fn;
  216. },
  217. get onmessage() {
  218. return ws.onmessage;
  219. },
  220. set onmessage(fn) {
  221. ws_on_message = fn;
  222. ws.onmessage = WG.receive_message;
  223. if (unsafeWindow.funny) {
  224. if (unsafeWindow.funny.API != null) {
  225. unsafeWindow.funny.API.ws_on_message = fn
  226. unsafeWindow.funny.API.websocket = ws
  227. }
  228. }
  229. },
  230. get onclose() {
  231. return ws.onclose;
  232. },
  233. set onclose(fn) {
  234. ws.onclose = (e) => {
  235. WG.online = false;
  236. G.connected = false;
  237. auto_relogin = GM_getValue(roleid + "_auto_relogin", auto_relogin);
  238. fn(e);
  239. if (auto_relogin == "开") {
  240. setTimeout(() => {
  241. console.log(new Date());
  242. KEY.do_command("score");
  243. }, 10000);
  244. }
  245. }
  246.  
  247. },
  248. get onerror() {
  249. return ws.onerror;
  250. },
  251. set onerror(fn) {
  252. ws.onerror = fn;
  253. },
  254. send: function (text) {
  255. if (G.cookie == undefined) {
  256. G.cookie = text;
  257. }
  258. if (text.indexOf(G.id) > -1 && !G.connected) {
  259. text = G.cookie + ' ' + G.id
  260. }
  261. if (G.cmd_echo) {
  262. show_msg('<hiy>' + text + '</hiy>');
  263. }
  264. if (text[0] == "$") {
  265. WG.SendCmd(text);
  266. return;
  267. }
  268. if (text[0] == '@') {
  269. if (unsafeWindow && unsafeWindow.ToRaid) {
  270. ToRaid.perform(text);
  271. return;
  272. } else {
  273. messageAppend("插件未安装,请访问 https://greasyfork.org/zh-CN/scripts/375851-wsmud-raid 下载并安装");
  274. window.open("https://greasyfork.org/zh-CN/scripts/375851-wsmud-raid ", '_blank').location;
  275. }
  276. }
  277. if (text.indexOf('drop') == 0) {
  278. var itemids = text.split(' ');
  279. var itemid = itemids[itemids.length - 1];
  280. WG.getItemNameByid(itemid, function (name) {
  281. if (lock_list.indexOf(name) >= 0) {
  282. messageAppend(`已锁物品${name},无法丢弃,请解锁后重试`);
  283. return;
  284. } else {
  285. ws.send(text);
  286. }
  287. })
  288. return;
  289. }
  290. if (text.indexOf('jh ') == 0 || text.indexOf("go ") == 0) {
  291. if (auto_rewardgoto == "开") {
  292. WG.Send("tm " + text);
  293. }
  294. }
  295.  
  296. switch (text) {
  297. case 'sm':
  298. T.sm();
  299. break;
  300. case 'wk':
  301. WG.zdwk();
  302. break;
  303. case 'backup':
  304. WG.make_config();
  305. break;
  306. case 'load':
  307. WG.load_config();
  308. break;
  309. default:
  310. ws.send(text);
  311. break;
  312. }
  313. },
  314. close: function () {
  315. ws.close();
  316. }
  317. };
  318.  
  319. var cmd_queue = [],
  320. cmd_busy = false,
  321. echo = false;
  322. var _send_cmd = function () {
  323. if (!ws || ws.readyState != 1) {
  324. cmd_busy = false;
  325. cmd_queue = []
  326. } else if (cmd_queue.length > 0) {
  327. cmd_busy = true;
  328. var t = new Date().getTime();
  329. for (var i = 0; i < cmd_queue.length; i++) {
  330. if (!cmd_queue[i].timestamp || cmd_queue[i].timestamp >= t - 1300) {
  331. cmd_queue.splice(0, i);
  332. break
  333. }
  334. }
  335. for (i = 0; i < Math.min(cmd_queue.length, 5); i++) {
  336. if (!cmd_queue[i].timestamp) {
  337. try {
  338. ws.send(cmd_queue[i].cmd);
  339. cmd_queue[i].timestamp = t
  340. } catch (e) {
  341. cmd_busy = false;
  342. cmd_queue = [];
  343. return
  344. }
  345. }
  346. }
  347. if (!cmd_queue[cmd_queue.length - 1].timestamp) {
  348. setTimeout(_send_cmd, 100)
  349. } else {
  350. cmd_busy = false
  351. }
  352. } else {
  353. cmd_busy = false
  354. }
  355. };
  356. var send_cmd = function (cmd, no_queue) {
  357. if (ws && ws.readyState == 1) {
  358. cmd = cmd instanceof Array ? cmd : cmd.split(';');
  359. if (no_queue) {
  360. for (var i = 0; i < cmd.length; i++) {
  361. if (G.cmd_echo) {
  362. show_msg('<hiy>' + cmd[i] + '</hiy>')
  363. }
  364. ws.send(cmd[i])
  365. }
  366. } else {
  367. for (i = 0; i < cmd.length; i++) {
  368. cmd_queue.push({
  369. cmd: cmd[i],
  370. timestamp: 0
  371. })
  372. }
  373. if (!cmd_busy) {
  374. _send_cmd()
  375. }
  376. }
  377. }
  378. };
  379.  
  380. } else {
  381. console.log("插件不可运行,请访问: https://greasyfork.org/zh-CN/forum/discussion/41547/x");
  382. }
  383. var L = {
  384. msg: function (msg) {
  385. const interval = setInterval(() => {
  386. if (typeof layer !== 'undefined') {
  387. clearInterval(interval);
  388. layer.msg(msg, {
  389. offset: '50%',
  390. shift: 5
  391. });
  392. } else {
  393. var server = document.createElement('script');
  394. server.setAttribute('src', 'https://s4.zstatic.net/ajax/libs/layer/2.3/layer.js');
  395. document.head.appendChild(server);
  396. }
  397. }, 500); // 每500毫秒检查一次
  398. },
  399. isMobile: function () {
  400. var ua = navigator.userAgent;
  401. var ipad = ua.match(/(iPad).*OS\s([\d_]+)/),
  402. isIphone = !ipad && ua.match(/(iPhone\sOS)\s([\d_]+)/),
  403. isAndroid = ua.match(/(Android)\s+([\d.]+)/),
  404. isMobile = isIphone || isAndroid;
  405. return isMobile;
  406. }
  407. };
  408.  
  409. var roomItemSelectIndex = -1;
  410. var timer = 0;
  411. var cnt = 0;
  412. var zb_npc;
  413. var zb_place;
  414. var next = 0;
  415. var roomData = [];
  416. var packData = []; // 背包数据
  417. var storeData = [];// 仓库数据
  418. var eqData = [];
  419. var store_list = [];
  420. var lock_list = [];
  421. var needfind = {
  422. "武当派-林间小径": ["go south"],
  423. "峨眉派-走廊": ["go north", "go south;go south", "go north;go east;go east"],
  424. "丐帮-暗道": ["go east", "go east;go east", "go east"],
  425. "逍遥派-林间小道": ["go west;go north", "go south;go south", "go north;go west"],
  426. "少林派-竹林": ["go north"],
  427. "逍遥派-地下石室": ["go up"],
  428. "逍遥派-木屋": ["go south;go south;go south;go south"]
  429. };
  430. var pgoods = {};
  431. var goods = {
  432. "米饭": {
  433. "id": null,
  434. "type": "wht",
  435. "sales": "店小二",
  436. "place": "扬州城-醉仙楼"
  437. },
  438. "包子": {
  439. "id": null,
  440. "type": "wht",
  441. "sales": "店小二",
  442. "place": "扬州城-醉仙楼"
  443. },
  444. "鸡腿": {
  445. "id": null,
  446. "type": "wht",
  447. "sales": "店小二",
  448. "place": "扬州城-醉仙楼"
  449. },
  450. "面条": {
  451. "id": null,
  452. "type": "wht",
  453. "sales": "店小二",
  454. "place": "扬州城-醉仙楼"
  455. },
  456. "扬州炒饭": {
  457. "id": null,
  458. "type": "wht",
  459. "sales": "店小二",
  460. "place": "扬州城-醉仙楼"
  461. },
  462. "米酒": {
  463. "id": null,
  464. "type": "wht",
  465. "sales": "店小二",
  466. "place": "扬州城-醉仙楼"
  467. },
  468. "花雕酒": {
  469. "id": null,
  470. "type": "wht",
  471. "sales": "店小二",
  472. "place": "扬州城-醉仙楼"
  473. },
  474. "女儿红": {
  475. "id": null,
  476. "type": "wht",
  477. "sales": "店小二",
  478. "place": "扬州城-醉仙楼"
  479. },
  480. "醉仙酿": {
  481. "id": null,
  482. "type": "hig",
  483. "sales": "店小二",
  484. "place": "扬州城-醉仙楼"
  485. },
  486. "神仙醉": {
  487. "id": null,
  488. "type": "hiy",
  489. "sales": "店小二",
  490. "place": "扬州城-醉仙楼"
  491. },
  492. "布衣": {
  493. "id": null,
  494. "type": "wht",
  495. "sales": "杂货铺老板 杨永福",
  496. "place": "扬州城-杂货铺"
  497. },
  498. "钢刀": {
  499. "id": null,
  500. "type": "wht",
  501. "sales": "杂货铺老板 杨永福",
  502. "place": "扬州城-杂货铺"
  503. },
  504. "木棍": {
  505. "id": null,
  506. "type": "wht",
  507. "sales": "杂货铺老板 杨永福",
  508. "place": "扬州城-杂货铺"
  509. },
  510. "英雄巾": {
  511. "id": null,
  512. "type": "wht",
  513. "sales": "杂货铺老板 杨永福",
  514. "place": "扬州城-杂货铺"
  515. },
  516. "布鞋": {
  517. "id": null,
  518. "type": "wht",
  519. "sales": "杂货铺老板 杨永福",
  520. "place": "扬州城-杂货铺"
  521. },
  522. "铁戒指": {
  523. "id": null,
  524. "type": "wht",
  525. "sales": "杂货铺老板 杨永福",
  526. "place": "扬州城-杂货铺"
  527. },
  528. "簪子": {
  529. "id": null,
  530. "type": "wht",
  531. "sales": "杂货铺老板 杨永福",
  532. "place": "扬州城-杂货铺"
  533. },
  534. "长鞭": {
  535. "id": null,
  536. "type": "wht",
  537. "sales": "杂货铺老板 杨永福",
  538. "place": "扬州城-杂货铺"
  539. },
  540. "钓鱼竿": {
  541. "id": null,
  542. "type": "wht",
  543. "sales": "杂货铺老板 杨永福",
  544. "place": "扬州城-杂货铺"
  545. },
  546. "鱼饵": {
  547. "id": null,
  548. "type": "wht",
  549. "sales": "杂货铺老板 杨永福",
  550. "place": "扬州城-杂货铺"
  551. },
  552. "铁剑": {
  553. "id": null,
  554. "type": "wht",
  555. "sales": "铁匠铺老板 铁匠",
  556. "place": "扬州城-打铁铺"
  557. },
  558. "钢刀": {
  559. "id": null,
  560. "type": "wht",
  561. "sales": "铁匠铺老板 铁匠",
  562. "place": "扬州城-打铁铺"
  563. },
  564. "铁棍": {
  565. "id": null,
  566. "type": "wht",
  567. "sales": "铁匠铺老板 铁匠",
  568. "place": "扬州城-打铁铺"
  569. },
  570. "铁杖": {
  571. "id": null,
  572. "type": "wht",
  573. "sales": "铁匠铺老板 铁匠",
  574. "place": "扬州城-打铁铺"
  575. },
  576. "铁镐": {
  577. "id": null,
  578. "type": "wht",
  579. "sales": "铁匠铺老板 铁匠",
  580. "place": "扬州城-打铁铺"
  581. },
  582. "飞镖": {
  583. "id": null,
  584. "type": "wht",
  585. "sales": "铁匠铺老板 铁匠",
  586. "place": "扬州城-打铁铺"
  587. },
  588. "hig金创药": {
  589. "id": null,
  590. "type": "hig",
  591. "sales": "药铺老板 平一指",
  592. "place": "扬州城-药铺"
  593. },
  594. "hig引气丹": {
  595. "id": null,
  596. "type": "hig",
  597. "sales": "药铺老板 平一指",
  598. "place": "扬州城-药铺"
  599. },
  600. };
  601. var equip = {
  602. "铁镐": 0,
  603. };
  604. var npcs = {
  605. "店小二": 0,
  606. "铁匠铺老板 铁匠": 0,
  607. "药铺老板 平一指": 0,
  608. "杂货铺老板 杨永福": 0
  609. };
  610. var place = {
  611. "住房": "jh fam 0 start;go west;go west;go north;go enter",
  612. "住房-卧室": "jh fam 0 start;go west;go west;go north;go enter;go north;store",
  613. "住房-小花园": "jh fam 0 start;go west;go west;go north;go enter;go northeast",
  614. "住房-炼药房": "jh fam 0 start;go west;go west;go north;go enter;go east",
  615. "住房-练功房": "jh fam 0 start;go west;go west;go north;go enter;go west",
  616. "扬州城-钱庄": "jh fam 0 start;go north;go west;store",
  617. "扬州城-广场": "jh fam 0 start",
  618. "扬州城-书院": "jh fam 0 start;go east;go north",
  619. "扬州城-醉仙楼": "jh fam 0 start;go north;go north;go east",
  620. "扬州城-杂货铺": "jh fam 0 start;go east;go south",
  621. "扬州城-打铁铺": "jh fam 0 start;go east;go east;go south",
  622. "扬州城-药铺": "jh fam 0 start;go east;go east;go north",
  623. "扬州城-衙门正厅": "jh fam 0 start;go west;go north;go north",
  624. "扬州城-镖局正厅": "jh fam 0 start;go west;go west;go south;go south",
  625. "扬州城-矿山": "jh fam 0 start;go west;go west;go west;go west",
  626. "扬州城-喜宴": "jh fam 0 start;go north;go north;go east;go up",
  627. "扬州城-擂台": "jh fam 0 start;go west;go south",
  628. "扬州城-当铺": "jh fam 0 start;go south;go east",
  629. "扬州城-帮派": "jh fam 0 start;go south;go south;go east",
  630. "扬州城-有间客栈": "jh fam 0 start;go north;go east",
  631. "扬州城-赌场": "jh fam 0 start;go south;go west",
  632. "帮会-大门": "jh fam 0 start;go south;go south;go east;go east",
  633. "帮会-大院": "jh fam 0 start;go south;go south;go east;go east;go east",
  634. "帮会-练功房": "jh fam 0 start;go south;go south;go east;go east;go east;go north",
  635. "帮会-聚义堂": "jh fam 0 start;go south;go south;go east;go east;go east;go east",
  636. "帮会-仓库": "jh fam 0 start;go south;go south;go east;go east;go east;go east;go north",
  637. "帮会-炼药房": "jh fam 0 start;go south;go south;go east;go east;go east;go south",
  638. "扬州城-扬州武馆": "jh fam 0 start;go south;go south;go west",
  639. "扬州城-武庙": "jh fam 0 start;go north;go north;go west",
  640. "武当派-广场": "jh fam 1 start;",
  641. "武当派-三清殿": "jh fam 1 start;go north",
  642. "武当派-石阶": "jh fam 1 start;go west",
  643. "武当派-练功房": "jh fam 1 start;go west;go west",
  644. "武当派-太子岩": "jh fam 1 start;go west;go northup",
  645. "武当派-桃园小路": "jh fam 1 start;go west;go northup;go north",
  646. "武当派-舍身崖": "jh fam 1 start;go west;go northup;go north;go east",
  647. "武当派-南岩峰": "jh fam 1 start;go west;go northup;go north;go west",
  648. "武当派-乌鸦岭": "jh fam 1 start;go west;go northup;go north;go west;go northup",
  649. "武当派-五老峰": "jh fam 1 start;go west;go northup;go north;go west;go northup;go northup",
  650. "武当派-虎头岩": "jh fam 1 start;go west;go northup;go north;go west;go northup;go northup;go northup",
  651. "武当派-朝天宫": "jh fam 1 start;go west;go northup;go north;go west;go northup;go northup;go northup;go north",
  652. "武当派-三天门": "jh fam 1 start;go west;go northup;go north;go west;go northup;go northup;go northup;go north;go north",
  653. "武当派-紫金城": "jh fam 1 start;go west;go northup;go north;go west;go northup;go northup;go northup;go north;go north;go north",
  654. "武当派-林间小径": "jh fam 1 start;go west;go northup;go north;go west;go northup;go northup;go northup;go north;go north;go north;go north;go north",
  655. "武当派-后山小院": "jh fam 1 start;go west;go northup;go north;go west;go northup;go northup;go northup;go north;go north;go north;go north;go north;go north",
  656. "少林派-广场": "jh fam 2 start;",
  657. "少林派-山门殿": "jh fam 2 start;go north",
  658. "少林派-东侧殿": "jh fam 2 start;go north;go east",
  659. "少林派-西侧殿": "jh fam 2 start;go north;go west",
  660. "少林派-天王殿": "jh fam 2 start;go north;go north",
  661. "少林派-大雄宝殿": "jh fam 2 start;go north;go north;go northup",
  662. "少林派-钟楼": "jh fam 2 start;go north;go north;go northeast",
  663. "少林派-鼓楼": "jh fam 2 start;go north;go north;go northwest",
  664. "少林派-后殿": "jh fam 2 start;go north;go north;go northwest;go northeast",
  665. "少林派-练武场": "jh fam 2 start;go north;go north;go northwest;go northeast;go north",
  666. "少林派-罗汉堂": "jh fam 2 start;go north;go north;go northwest;go northeast;go north;go east",
  667. "少林派-般若堂": "jh fam 2 start;go north;go north;go northwest;go northeast;go north;go west",
  668. "少林派-方丈楼": "jh fam 2 start;go north;go north;go northwest;go northeast;go north;go north",
  669. "少林派-戒律院": "jh fam 2 start;go north;go north;go northwest;go northeast;go north;go north;go east",
  670. "少林派-达摩院": "jh fam 2 start;go north;go north;go northwest;go northeast;go north;go north;go west",
  671. "少林派-竹林": "jh fam 2 start;go north;go north;go northwest;go northeast;go north;go north;go north",
  672. "少林派-藏经阁": "jh fam 2 start;go north;go north;go northwest;go northeast;go north;go north;go north;go west",
  673. "少林派-达摩洞": "jh fam 2 start;go north;go north;go northwest;go northeast;go north;go north;go north;go north;go north",
  674. "华山派-镇岳宫": "jh fam 3 start;",
  675. "华山派-苍龙岭": "jh fam 3 start;go eastup",
  676. "华山派-舍身崖": "jh fam 3 start;go eastup;go southup",
  677. "华山派-峭壁": "jh fam 3 start;go eastup;go southup;jumpdown",
  678. "华山派-山谷": "jh fam 3 start;go eastup;go southup;jumpdown;go southup",
  679. "华山派-山间平地": "jh fam 3 start;go eastup;go southup;jumpdown;go southup;go south",
  680. "华山派-林间小屋": "jh fam 3 start;go eastup;go southup;jumpdown;go southup;go south;go east",
  681. "华山派-玉女峰": "jh fam 3 start;go westup",
  682. "华山派-玉女祠": "jh fam 3 start;go westup;go west",
  683. "华山派-练武场": "jh fam 3 start;go westup;go north",
  684. "华山派-练功房": "jh fam 3 start;go westup;go north;go east",
  685. "华山派-客厅": "jh fam 3 start;go westup;go north;go north",
  686. "华山派-偏厅": "jh fam 3 start;go westup;go north;go north;go east",
  687. "华山派-寝室": "jh fam 3 start;go westup;go north;go north;go north",
  688. "华山派-玉女峰山路": "jh fam 3 start;go westup;go south",
  689. "华山派-玉女峰小径": "jh fam 3 start;go westup;go south;go southup",
  690. "华山派-思过崖": "jh fam 3 start;go westup;go south;go southup;go southup",
  691. "华山派-山洞": "jh fam 3 start;go westup;go south;go southup;go southup;break bi;go enter",
  692. "华山派-长空栈道": "jh fam 3 start;go westup;go south;go southup;go southup;break bi;go enter;go westup",
  693. "华山派-落雁峰": "jh fam 3 start;go westup;go south;go southup;go southup;break bi;go enter;go westup;go westup",
  694. "华山派-华山绝顶": "jh fam 3 start;go westup;go south;go southup;go southup;break bi;go enter;go westup;go westup;jumpup",
  695. "峨眉派-金顶": "jh fam 4 start",
  696. "峨眉派-庙门": "jh fam 4 start;go west",
  697. "峨眉派-广场": "jh fam 4 start;go west;go south",
  698. "峨眉派-走廊": "jh fam 4 start;go west;go south;go west",
  699. "峨眉派-休息室": "jh fam 4 start;go west;go south;go east;go south",
  700. "峨眉派-厨房": "jh fam 4 start;go west;go south;go east;go east",
  701. "峨眉派-练功房": "jh fam 4 start;go west;go south;go west;go west",
  702. "峨眉派-小屋": "jh fam 4 start;go west;go south;go west;go north;go north",
  703. "峨眉派-清修洞": "jh fam 4 start;go west;go south;go west;go south;go south",
  704. "峨眉派-大殿": "jh fam 4 start;go west;go south;go south",
  705. "峨眉派-睹光台": "jh fam 4 start;go northup",
  706. "峨眉派-华藏庵": "jh fam 4 start;go northup;go east",
  707. "逍遥派-青草坪": "jh fam 5 start",
  708. "逍遥派-林间小道": "jh fam 5 start;go east",
  709. "逍遥派-练功房": "jh fam 5 start;go east;go north",
  710. "逍遥派-木板路": "jh fam 5 start;go east;go south",
  711. "逍遥派-工匠屋": "jh fam 5 start;go east;go south;go south",
  712. "逍遥派-休息室": "jh fam 5 start;go west;go south",
  713. "逍遥派-木屋": "jh fam 5 start;go north;go north",
  714. "逍遥派-地下石室": "jh fam 5 start;go down;go down",
  715. "丐帮-树洞内部": "jh fam 6 start",
  716. "丐帮-树洞下": "jh fam 6 start;go down",
  717. "丐帮-暗道": "jh fam 6 start;go down;go east",
  718. "丐帮-破庙密室": "jh fam 6 start;go down;go east;go east;go east",
  719. "丐帮-土地庙": "jh fam 6 start;go down;go east;go east;go east;go up",
  720. "丐帮-林间小屋": "jh fam 6 start;go down;go east;go east;go east;go east;go east;go up",
  721. "杀手楼-大门": "jh fam 7 start",
  722. "杀手楼-大厅": "jh fam 7 start;go north",
  723. "杀手楼-暗阁": "jh fam 7 start;go north;go up",
  724. "杀手楼-铜楼": "jh fam 7 start;go north;go up;go up",
  725. "杀手楼-休息室": "jh fam 7 start;go north;go up;go up;go east",
  726. "杀手楼-银楼": "jh fam 7 start;go north;go up;go up;go up;go up",
  727. "杀手楼-练功房": "jh fam 7 start;go north;go up;go up;go up;go up;go east",
  728. "杀手楼-金楼": "jh fam 7 start;go north;go up;go up;go up;go up;go up;go up",
  729. "杀手楼-书房": "jh fam 7 start;go north;go up;go up;go up;go up;go up;go up;go west",
  730. "杀手楼-平台": "jh fam 7 start;go north;go up;go up;go up;go up;go up;go up;go up",
  731. "襄阳城-广场": "jh fam 8 start",
  732. "襄阳城-南城门": "jh fam 8 start;go south;go south;go south;go south",
  733. "襄阳城-北城门": "jh fam 8 start;go north;go north;go north;go north;",
  734. "襄阳城-西城门": "jh fam 8 start;go west;go west;go west;go west",
  735. "襄阳城-东城门": "jh fam 8 start;go east;go eastgo east;go east",
  736. "武道塔": "jh fam 9 start"
  737. };
  738. var mpz_path = {
  739. "武当派": "jh fam 1 start;go west;go northup;go north;go west;go northup;go northup;go northup;go north;go north;go north;go north;go north",
  740. "华山派": "jh fam 3 start;go westup;go north",
  741. "少林派": "jh fam 2 start;go north;go north;go northwest;go northeast;go north",
  742. "峨眉派": "jh fam 4 start;go west;go south;go west;go south",
  743. "逍遥派": "jh fam 5 start;go west;go east;go down",
  744. "丐帮": "jh fam 6 start;go down;go east;go east;go east;go east;go east",
  745. };
  746. var diff_colors = {
  747. 'normal': '',
  748. 'access': 'https://cdn.jsdelivr.net/gh/mapleobserver/wsmud-script/plugins/wsmud_color_accessibility.css',
  749. 'flat': 'https://cdn.jsdelivr.net/gh/mapleobserver/wsmud-script/plugins/wsmud_color_flat.css'
  750. };
  751. var fb_path = [];
  752. var drop_list = [];
  753. var fenjie_list = [];
  754. //boss黑名单
  755. var blacklist = "";
  756. //pfm黑名单
  757. var blackpfm = [];
  758. //角色
  759. var role;
  760. var roleid;
  761. //门派
  762. var family = null;
  763. //师门自动放弃
  764. var sm_loser = "开";
  765. //师门自动牌子
  766. var sm_price = null;
  767. //师门自动取
  768. var sm_getstore = null;
  769. //师门无视稀有程度
  770. var sm_any = "开";
  771. //
  772. var wudao_pfm = "";
  773. //boss战斗前等待(ms)
  774. var ks_pfm = "2000";
  775. //boss等待时间(s)
  776. var ks_wait = "120";
  777. //自动婚宴
  778. var automarry = null;
  779. //自动boss
  780. var autoKsBoss = null;
  781. //系列自动
  782. var stopauto = false;
  783. //获得物品战士
  784. var getitemShow = null;
  785. //自命令展示方式
  786. var zmlshowsetting = 0;
  787. //背包已满提示方式
  788. var bagFull = 0;
  789. //通知推送开关、方式、Token、Url
  790. var pushSwitch = "关";
  791. var pushType = "0";
  792. var pushToken = "";
  793. // var pushUrl = "https://";
  794. //停止后动作
  795. var auto_command = null;
  796. //装备列表
  797. var eqlist = {};
  798. //{'unarmed':'','force':'','dodge':'','sword':'','blade':'','club':'','staff':'','whip':'','parry':''}
  799. var skilllist = {};
  800. //自动施法黑名单
  801. var unauto_pfm = '';
  802. //自动施法开关
  803. var auto_pfmswitch = "开";
  804. // 自动施法模式 开:智能施法,关:顺序施法
  805. var auto_pfm_mode = "开";
  806. //自动转发路径
  807. var auto_rewardgoto = "关";
  808. //显示昏迷信息
  809. var busy_info = "关";
  810. //仓库位置
  811. var saveAddr = "关";
  812. //自动更新仓库数据
  813. var auto_updateStore = "关";
  814. //自动重连
  815. var auto_relogin = "关";
  816. var autoeq = "";
  817. //自命令数组 type 0 原生 1 自命令 2js
  818. //[{"name":"name","zmlRun":"zzzz","zmlShow":"1","zmlType":"0"}]
  819. var zml = [];
  820. //自定义存取
  821. var zdy_item_store = '';
  822. //自定义存取
  823. var zdy_item_store2 = '';
  824. //自定义锁
  825. var zdy_item_lock = '';
  826. //自定义丢弃
  827. var zdy_item_drop = '';
  828. //自定义分解
  829. var zdy_item_fenjie = '';
  830. //状态监控 type 类型 ishave 0 =其他任何人 1= 本人 2 仅npc send 命令数组
  831. //[{"name":"","type":"status","action":"remove","keyword":"busy","ishave":"0","send":"","isactive":"1","maxcount":10,"pname":"宋远桥","istip":"1"}]
  832. var ztjk_item = [];
  833. // 自定义技能开关
  834. var zdyskills = "关";
  835. var zdyskilllist = "";
  836. //欢迎语
  837. var welcome = '';
  838. //屏蔽开关
  839. var shieldswitch = "开"
  840. //屏蔽列表
  841. var shield = '';
  842. //屏蔽关键字列表
  843. var shieldkey = '';
  844. //当你学习,练习,打坐中断后,自动去挖矿或以下操作
  845. var statehml = '';
  846. //背景图片
  847. var backimageurl = '';
  848. //登录后执行
  849. var loginhml = '';
  850. //定时任务
  851. //名称 类型 一次 1 每天 0 发送命令 触发时间 24小时制
  852. //[{"name":"","type":"0","send":"","h":"","s":"","m":""}]
  853. var timequestion = [];
  854. //安静模式
  855. var silence = '开';
  856. //dps统计信息
  857. var pfmnum = 0;
  858. var pfmdps = 0;
  859. var dpssakada = '开'
  860. var critical = 0;
  861. var criticalnum = 0;
  862. var dpslock = 0;
  863. var battletime = 0;
  864. var lastcri = 0, lastpfm = 0;
  865. //funny计算
  866. var funnycalc = '关'
  867. //自定义btn
  868. //[{"name":名称,"send":""},]
  869. var inzdy_btn = false;
  870. var zdy_btnlist = [];
  871. //自动购买
  872. var auto_buylist = "";
  873. //自动回收残页清单
  874. var auto_skillPaperSelllist = "";
  875. //配色
  876. var color_select = "normal";
  877. //死亡提示
  878. var die_str = "菜";
  879. //快捷键功能
  880. var exit1 = undefined;
  881. var exit2 = undefined;
  882. var exit3 = undefined;
  883. var KEY = {
  884. keys: [],
  885. roomItemSelectIndex: -1,
  886. init: function () {
  887. //添加快捷键说明
  888. $("span[command=stopstate] span:eq(0)").html("S");
  889. $("span[command=showcombat] span:eq(0)").html("A");
  890. $("span[command=showtool] span:eq(0)").html("C");
  891. $("span[command=pack] span:eq(0)").html("B");
  892. $("span[command=tasks] span:eq(0)").html("L");
  893. $("span[command=score] span:eq(0)").html("O");
  894. $("span[command=jh] span:eq(0)").html("J");
  895. $("span[command=skills] span:eq(0)").html("K");
  896. $("span[command=message] span:eq(0)").html("U");
  897. $("span[command=shop] span:eq(0)").html("P");
  898. $("span[command=stats] span:eq(0)").html("I");
  899. $("span[command=setting] span:eq(0)").html(",");
  900.  
  901. $(document).on("keydown", this.e);
  902. this.add(27, function () {
  903. KEY.dialog_close();
  904. });
  905. this.add(192, function () {
  906. $(".map-icon").click();
  907. });
  908. this.add(32, function () {
  909. KEY.dialog_confirm();
  910. });
  911. this.add(83, function () {
  912. KEY.do_command("stopstate");
  913. });
  914. this.add(13, function () {
  915. KEY.do_command("showchat");
  916. });
  917. this.add(65, function () {
  918. KEY.do_command("showcombat");
  919. });
  920. this.add(67, function () {
  921. KEY.do_command("showtool");
  922. });
  923. this.add(66, function () {
  924. KEY.do_command("pack");
  925. });
  926. this.add(76, function () {
  927. KEY.do_command("tasks");
  928. });
  929. this.add(79, function () {
  930. KEY.do_command("score");
  931. });
  932. this.add(74, function () {
  933. KEY.do_command("jh");
  934. });
  935. this.add(75, function () {
  936. KEY.do_command("skills");
  937. });
  938. this.add(73, function () {
  939. KEY.do_command("stats");
  940. });
  941. this.add(85, function () {
  942. KEY.do_command("message");
  943. });
  944. this.add(80, function () {
  945. KEY.do_command("shop");
  946. });
  947. this.add(188, function () {
  948. KEY.do_command("setting");
  949. });
  950. this.add(81, function () {
  951. inzdy_btn ? WG.zdybtnfunc(0) : WG.sm_button();
  952. });
  953. this.add(87, function () {
  954. inzdy_btn ? WG.zdybtnfunc(1) : WG.go_yamen_task();
  955. });
  956. this.add(69, function () {
  957. inzdy_btn ? WG.zdybtnfunc(2) : WG.kill_all();
  958. });
  959. this.add(82, function () {
  960. inzdy_btn ? WG.zdybtnfunc(3) : WG.get_all();
  961. });
  962. this.add(84, function () {
  963. inzdy_btn ? WG.zdybtnfunc(4) : WG.sell_all();
  964. });
  965. this.add(89, function () {
  966. inzdy_btn ? WG.zdybtnfunc(5) : WG.zdwk();
  967. });
  968. this.add(9, function () {
  969. KEY.onRoomItemSelect();
  970. return false;
  971. });
  972. //方向
  973. this.add(102, function () {
  974. // NumPad 6 等同于→
  975. exit1 = G.exits.get("east");
  976. exit2 = G.exits.get("eastup");
  977. exit3 = G.exits.get("eastdown");
  978. if (exit1) {
  979. WG.Send("go east")
  980. } else if (exit2) {
  981. {
  982. WG.Send("go eastup")
  983. }
  984. } else if (exit3) {
  985. {
  986. WG.Send("go eastdown")
  987. }
  988. }
  989. KEY.onChangeRoom();
  990. });
  991. this.add(39, function () {
  992. exit1 = G.exits.get("east");
  993. exit2 = G.exits.get("eastup");
  994. exit3 = G.exits.get("eastdown");
  995. if (exit1) {
  996. WG.Send("go east")
  997. } else if (exit2) {
  998. {
  999. WG.Send("go eastup")
  1000. }
  1001. } else if (exit3) {
  1002. {
  1003. WG.Send("go eastdown")
  1004. }
  1005. }
  1006. KEY.onChangeRoom();
  1007. });
  1008. this.add(100, function () {
  1009. exit1 = G.exits.get("west");
  1010. exit2 = G.exits.get("westup");
  1011. exit3 = G.exits.get("westdown");
  1012. if (exit1) {
  1013. WG.Send("go west")
  1014. } else if (exit2) {
  1015. {
  1016. WG.Send("go westup")
  1017. }
  1018. } else if (exit3) {
  1019. {
  1020. WG.Send("go westdown")
  1021. }
  1022. }
  1023. KEY.onChangeRoom();
  1024. });
  1025. this.add(37, function () {
  1026. exit1 = G.exits.get("west");
  1027. exit2 = G.exits.get("westup");
  1028. exit3 = G.exits.get("westdown");
  1029. if (exit1) {
  1030. WG.Send("go west")
  1031. } else if (exit2) {
  1032. {
  1033. WG.Send("go westup")
  1034. }
  1035. } else if (exit3) {
  1036. {
  1037. WG.Send("go westdown")
  1038. }
  1039. }
  1040. KEY.onChangeRoom();
  1041. });
  1042. this.add(98, function () {
  1043. // NumPad 2 等同于↓
  1044. exit1 = G.exits.get("south");
  1045. exit2 = G.exits.get("southup");
  1046. exit3 = G.exits.get("southdown");
  1047. if (exit1) {
  1048. WG.Send("go south")
  1049. } else if (exit2) {
  1050. {
  1051. WG.Send("go southup")
  1052. }
  1053. } else if (exit3) {
  1054. {
  1055. WG.Send("go southdown")
  1056. }
  1057. }
  1058. KEY.onChangeRoom();
  1059. });
  1060. this.add(40, function () {
  1061. // Down Arrow↓
  1062. exit1 = G.exits.get("south");
  1063. exit2 = G.exits.get("southup");
  1064. exit3 = G.exits.get("southdown");
  1065. if (exit1) {
  1066. WG.Send("go south")
  1067. } else if (exit2) {
  1068. {
  1069. WG.Send("go southup")
  1070. }
  1071. } else if (exit3) {
  1072. {
  1073. WG.Send("go southdown")
  1074. }
  1075. }
  1076. KEY.onChangeRoom();
  1077. });
  1078. this.add(101, function () {
  1079. // NumPad 3 控制down,按住alt时为up
  1080. WG.Send("go down");
  1081. });
  1082. this.add(101 + 512, function () {
  1083. // NumPad 3 控制down,按住alt时为up
  1084. WG.Send("go up");
  1085. });
  1086. this.add(104, function () {
  1087. exit1 = G.exits.get("north");
  1088. exit2 = G.exits.get("northup");
  1089. exit3 = G.exits.get("northdown");
  1090. if (exit1) {
  1091. WG.Send("go north")
  1092. } else if (exit2) {
  1093. {
  1094. WG.Send("go northup")
  1095. }
  1096. } else if (exit3) {
  1097. {
  1098. WG.Send("go northdown")
  1099. }
  1100. }
  1101. KEY.onChangeRoom();
  1102. });
  1103. this.add(38, function () {
  1104. exit1 = G.exits.get("north");
  1105. exit2 = G.exits.get("northup");
  1106. exit3 = G.exits.get("northdown");
  1107. if (exit1) {
  1108. WG.Send("go north")
  1109. } else if (exit2) {
  1110. {
  1111. WG.Send("go northup")
  1112. }
  1113. } else if (exit3) {
  1114. {
  1115. WG.Send("go northdown")
  1116. }
  1117. }
  1118. KEY.onChangeRoom();
  1119. });
  1120. this.add(99, function () {
  1121. WG.Send("go southeast");
  1122. KEY.onChangeRoom();
  1123. });
  1124. this.add(97, function () {
  1125. WG.Send("go southwest");
  1126. KEY.onChangeRoom();
  1127. });
  1128. this.add(105, function () {
  1129. WG.Send("go northeast");
  1130. KEY.onChangeRoom();
  1131. });
  1132. this.add(103, function () {
  1133. WG.Send("go northwest");
  1134. KEY.onChangeRoom();
  1135. });
  1136.  
  1137. this.add(49, function () {
  1138. KEY.combat_commands(0);
  1139. });
  1140. this.add(50, function () {
  1141. KEY.combat_commands(1);
  1142. });
  1143. this.add(51, function () {
  1144. KEY.combat_commands(2);
  1145. });
  1146. this.add(52, function () {
  1147. KEY.combat_commands(3);
  1148. });
  1149. this.add(53, function () {
  1150. KEY.combat_commands(4);
  1151. });
  1152. this.add(54, function () {
  1153. KEY.combat_commands(5);
  1154. });
  1155. this.add(55, function () {//7
  1156. KEY.combat_commands(6);
  1157. });
  1158. this.add(56, function () {//8
  1159. KEY.combat_commands(7);
  1160. });
  1161. this.add(57, function () {//9
  1162. KEY.combat_commands(8);
  1163. });
  1164. this.add(48, function () {//0
  1165. KEY.combat_commands(9);
  1166. });
  1167. this.add(45, function () {//-
  1168. KEY.combat_commands(10);
  1169. });
  1170. this.add(61, function () {//=
  1171. KEY.combat_commands(11);
  1172. });
  1173.  
  1174. //alt
  1175. this.add(49 + 512, function () {
  1176. KEY.onRoomItemAction(0);
  1177. });
  1178. this.add(50 + 512, function () {
  1179. KEY.onRoomItemAction(1);
  1180. });
  1181. this.add(51 + 512, function () {
  1182. KEY.onRoomItemAction(2);
  1183. });
  1184. this.add(52 + 512, function () {
  1185. KEY.onRoomItemAction(3);
  1186. });
  1187. this.add(53 + 512, function () {
  1188. KEY.onRoomItemAction(4);
  1189. });
  1190. this.add(54 + 512, function () {
  1191. KEY.onRoomItemAction(5);
  1192. });
  1193. //ctrl
  1194. this.add(49 + 1024, function () {
  1195. KEY.room_commands(0);
  1196. });
  1197. this.add(50 + 1024, function () {
  1198. KEY.room_commands(1);
  1199. });
  1200. this.add(51 + 1024, function () {
  1201. KEY.room_commands(2);
  1202. });
  1203. this.add(52 + 1024, function () {
  1204. KEY.room_commands(3);
  1205. });
  1206. this.add(53 + 1024, function () {
  1207. KEY.room_commands(4);
  1208. });
  1209. this.add(54 + 1024, function () {
  1210. KEY.room_commands(5);
  1211. });
  1212. },
  1213. add: function (k, c) {
  1214. var tmp = {
  1215. key: k,
  1216. callback: c,
  1217. };
  1218. this.keys.push(tmp);
  1219. },
  1220. e: function (event) {
  1221. if ($(".channel-box").is(":visible")) {
  1222. KEY.chatModeKeyEvent(event);
  1223. return;
  1224. }
  1225. if ($(".dialog-confirm").is(":visible") &&
  1226. ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105)))
  1227. return;
  1228. if ($('input').is(':focus') || $('textarea').is(':focus')) {
  1229. return;
  1230. }
  1231. var kk = (event.ctrlKey || event.metaKey ? 1024 : 0) + (event.altKey ? 512 : 0) + event.keyCode;
  1232. for (var k of KEY.keys) {
  1233. if (k.key == kk)
  1234. return k.callback();
  1235. }
  1236. },
  1237. isallow: true,
  1238. dialog_close: function () {
  1239. $(".dialog-close").click();
  1240. },
  1241. dialog_confirm: function () {
  1242. if ($(".dialog-confirm").attr("style").indexOf("block") >= 0) {
  1243. if (this.isallow) {
  1244. this.isallow = false
  1245. $(".dialog-btn.btn-ok").click();
  1246. setTimeout(() => {
  1247. this.isallow = true;
  1248. }, 500);
  1249. }
  1250. }
  1251. },
  1252. do_command: function (name) {
  1253. $("span[command=" + name + "]").click();
  1254. },
  1255. room_commands: function (index) {
  1256. $("div.combat-panel div.room-commands span:eq(" + index + ")").click();
  1257. },
  1258. combat_commands: function (index) {
  1259. $("div.combat-panel div.combat-commands span.pfm-item:eq(" + index + ")").click();
  1260. },
  1261. chatModeKeyEvent: function (event) {
  1262. if (event.keyCode == 27) {
  1263. KEY.dialog_close();
  1264. } else if (event.keyCode == 13) {
  1265. if ($(".sender-box").val().length) $(".sender-btn").click();
  1266. else KEY.dialog_close();
  1267. }
  1268. },
  1269. onChangeRoom: function () {
  1270. KEY.roomItemSelectIndex = -1;
  1271. },
  1272. onRoomItemSelect: function () {
  1273. if (KEY.roomItemSelectIndex != -1) {
  1274. $(".room_items div.room-item:eq(" + KEY.roomItemSelectIndex + ")").css("background", "#000");
  1275. }
  1276. KEY.roomItemSelectIndex = (KEY.roomItemSelectIndex + 1) % $(".room_items div.room-item").length;
  1277. var curItem = $(".room_items div.room-item:eq(" + KEY.roomItemSelectIndex + ")");
  1278. curItem.css("background", "#444");
  1279. curItem.click();
  1280. },
  1281. onRoomItemAction: function (index) {
  1282. //NPC下方按键
  1283. $(".room_items .item-commands span:eq(" + index + ")").click();
  1284. },
  1285. }
  1286.  
  1287. function textBecomeImg(text, fontsize, fontcolor) {
  1288. var canvas = document.createElement('canvas');
  1289. //小于32字加1 小于60字加2 小于80字加4 小于100字加6
  1290. var $buHeight = 0;
  1291. if (fontsize <= 32) { $buHeight = 1; }
  1292. else if (fontsize > 32 && fontsize <= 60) { $buHeight = 2; }
  1293. else if (fontsize > 60 && fontsize <= 80) { $buHeight = 4; }
  1294. else if (fontsize > 80 && fontsize <= 100) { $buHeight = 6; }
  1295. else if (fontsize > 100) { $buHeight = 10; }
  1296.  
  1297. //对于g j 等有时会有遮挡,这里增加一些高度
  1298. canvas.height = fontsize + $buHeight;
  1299. var context = canvas.getContext('2d');
  1300.  
  1301. // 擦除(0,0)位置大小为200x200的矩形,擦除的意思是把该区域变为透明
  1302. context.clearRect(0, 0, canvas.width, canvas.height);
  1303. context.fillStyle = fontcolor;
  1304. context.font = fontsize + "px KaiTi";
  1305.  
  1306. //top(顶部对齐) hanging(悬挂) middle(中间对齐) bottom(底部对齐) alphabetic是默认值
  1307. context.textBaseline = 'middle';
  1308. context.fillText(text, 0, fontsize / 2)
  1309.  
  1310. canvas.width = context.measureText(text).width;
  1311. context.fillStyle = fontcolor;
  1312. context.font = fontsize + "px KaiTi";
  1313. context.textBaseline = 'middle';
  1314. context.fillText(text, 0, fontsize / 2)
  1315.  
  1316. var dataUrl = canvas.toDataURL('image/png');//注意这里背景透明的话,需要使用png
  1317. return dataUrl;
  1318. }
  1319. function messageClear() {
  1320. $(".WG_log pre").html("");
  1321. }
  1322. var log_line = 0;
  1323.  
  1324. function textShow(text) {
  1325. imgShow(textBecomeImg(text, 90, 'red'))
  1326. }
  1327. function imgShow(url, t = 2000) {
  1328.  
  1329. $('.container > .content-message').css('background', 'url(' + url + ') no-repeat center center')
  1330. setTimeout(() => {
  1331. $('.container > .content-message').css('background', '')
  1332. }, t);
  1333. }
  1334. function messageAppend(m, t = 0, area = 0) {
  1335.  
  1336.  
  1337. if (area) {
  1338. var ap = m + "\n";
  1339. if (t == 1) {
  1340. ap = "<hiy>" + ap + "</hiy>";
  1341. } else if (t == 2) {
  1342. ap = "<hig>" + ap + "</hig>";
  1343. } else if (t == 3) {
  1344. ap = "<hiw>" + ap + "</hiw>";
  1345. } else if (t == 4) {
  1346. ap = "<hir>" + ap + "</hir>";
  1347. }
  1348. $('.content-message pre').append(ap)
  1349. } else {
  1350. 100 < log_line && (log_line = 0, $(".WG_log pre").empty());
  1351. var ap = m + "\n";
  1352. if (t == 1) {
  1353. ap = "<hiy>" + ap + "</hiy>";
  1354. } else if (t == 2) {
  1355. ap = "<hig>" + ap + "</hig>";
  1356. } else if (t == 3) {
  1357. ap = "<hiw>" + ap + "</hiw>";
  1358. } else if (t == 4) {
  1359. ap = "<hir>" + ap + "</hir>";
  1360. }
  1361. $(".WG_log pre").append(ap);
  1362. log_line++;
  1363. $(".WG_log")[0].scrollTop = 99999;
  1364. }
  1365. }
  1366. var sm_array = {
  1367. '武当': {
  1368. "place": "武当派-三清殿",
  1369. "npc": "武当派第二代弟子 武当首侠 宋远桥",
  1370. "sxplace": "武当派-太子岩",
  1371. "sx": "首席弟子"
  1372. },
  1373. '华山': {
  1374. "place": "华山派-镇岳宫",
  1375. "npc": "市井豪杰 高根明",
  1376. "sxplace": "华山派-练武场",
  1377. "sx": "首席弟子"
  1378. },
  1379. '少林': {
  1380. "place": "少林派-天王殿",
  1381. "npc": "少林寺第三十九代弟子 道觉禅师",
  1382. "sxplace": "少林派-练武场",
  1383. "sx": "大师兄"
  1384. },
  1385. '逍遥': {
  1386. "place": "逍遥派-青草坪",
  1387. "npc": "聪辩老人 苏星河",
  1388. "sxplace": "-jh fam 5 start;go west",
  1389. "sx": "首席弟子"
  1390. },
  1391. '丐帮': {
  1392. "place": "丐帮-树洞下",
  1393. "npc": "丐帮七袋弟子 左全",
  1394. "sxplace": "丐帮-破庙密室",
  1395. "sx": "首席弟子"
  1396. },
  1397. '峨眉': {
  1398. "place": "峨眉派-庙门",
  1399. "npc": "峨眉派第五代弟子 苏梦清",
  1400. "sxplace": "峨眉派-广场",
  1401. "sx": "大师姐"
  1402. },
  1403. '武馆': {
  1404. "place": "扬州城-扬州武馆",
  1405. "npc": "武馆教习",
  1406. "sxplace": "扬州城-扬州武馆"
  1407. },
  1408. '杀手楼': {
  1409. "place": "杀手楼-大厅",
  1410. "npc": "杀手教习 何小二",
  1411. "sxplace": "杀手楼-练功房",
  1412. "sx": "金牌杀手"
  1413. },
  1414. };
  1415. var WG = {
  1416. online: false,
  1417. sm_state: -1,
  1418. sm_item: null,
  1419. sm_store: null,
  1420. init: function () {
  1421. $("li[command=SelectRole]").on("click", function () {
  1422. WG.login();
  1423. });
  1424. },
  1425. inArray: function (val, arr) {
  1426. for (let i = 0; i < arr.length; i++) {
  1427. let item = arr[i];
  1428. if (item[0] == "<") {
  1429. if (item == val) return true;
  1430.  
  1431. } else {
  1432. if (item != "") {
  1433. if (val.indexOf(item) >= 0) return true;
  1434. }
  1435. }
  1436. }
  1437. return false;
  1438. },
  1439. hasStr: function (val, arr) {
  1440. if (arr.length == null) {
  1441. for (let item in arr) {
  1442. for (let i of arr[item]) {
  1443. if (i == val) return true;
  1444. }
  1445. }
  1446. } else {
  1447. for (let i = 0; i < arr.length; i++) {
  1448. let item = arr[i];
  1449. if (item == val) return true;
  1450. }
  1451. }
  1452. return false;
  1453. },
  1454. set_value(key, value) {
  1455. return GM_setValue(key, value);
  1456. },
  1457. get_value(key) {
  1458. return GM_getValue(key);
  1459. },
  1460. login: function () {
  1461. role = $('.role-list .select').text().split(/[\s\n]/).pop();
  1462. roleid = $('.role-list .select').attr('roleid')
  1463. GM_listValues().map(function (key) {
  1464. if (key.indexOf(role + "_") == 0) {
  1465. var tmpVal = key.split(role + "_")[1];
  1466. console.log(tmpVal)
  1467. GM_setValue(roleid + "_" + tmpVal, GM_getValue(key, null))
  1468. GM_deleteValue(key)
  1469. }
  1470. });
  1471.  
  1472. $(".bottom-bar").append("<span class='item-commands' style='display:none'><span WG='WG' cmd=''></span></span>"); //命令行模块
  1473. var html = UI.wgui();
  1474. $(".content-message").after(html);
  1475. $('.content-bottom').after("<div class='zdy-commands'></div>");
  1476. var css = `.zdy-item{
  1477. display: inline-block;border: solid 1px gray;color: gray;background-color: black;
  1478. text-align: center;cursor: pointer;border-radius: 0.25em;min-width: 2.5em;margin-right: 0em;
  1479. margin-left: 0.4em;position: relative;padding-left: 0.4em;padding-right: 0.4em;line-height: 24px;}
  1480. .WG_log{flex: 1;overflow-y: auto;border: 1px solid #404000;max-height: 15em;width: calc(100% - 40px);}
  1481. .WG_log > pre{margin: 0px; white-space: pre-line;}
  1482. .WG_button { width: calc(100% - 40px); overflow-x: auto;display: block;line-height:2em;}
  1483. .WG_button > .zdy-item:active {background-color: gray;color:black;}
  1484. .item-plushp{display: inline-block;float: right;width: 100px;}
  1485. .item-dps{display: inline-block;float: right;width: 100px;}
  1486. .settingbox {margin-left: 0.625 em;border: 1px solid gray;background-color: transparent;color: unset;resize: none;width: 80% ;height: 3rem;}
  1487. .runtest textarea{display:block;width:300px;height:160px;border:10px solid #F8F8F8;border-top-width:0;padding:10px;line-height:20px;overflow:auto;background-color:#3F3F3F;color:#eee;font-size:12px;font-family:Courier New}
  1488. .layui-btn,.layui-input,.layui-select,.layui-textarea,.layui-upload-button{outline:0;-webkit-appearance:none;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}
  1489. .layui-btn{display:inline-block;height:38px;line-height:38px;padding:0 18px;background-color:#009688;color:#fff;white-space:nowrap;text-align:center;font-size:14px;border:none;border-radius:2px;cursor:pointer}
  1490. .layui-btn-normal{background-color:#1E9FFF}
  1491. .layui-layer-moves{background-color:transparent}
  1492. .switch2 {display: inline-block;position: relative;height: 1.25em;width: 3.125em;line-height: 1.25em;
  1493. border-radius: 0.875em;background: #dedede;cursor: pointer;-ms-user-select: none;-moz-user-select: none;
  1494. -webkit-user-select: none;user-select: none;vertical-align: middle;text-align: center;}
  1495. .switch2 > .switch-button {position: absolute;left: 0px;height: 1.25em;width: 1.25em;
  1496. border-radius: 0.875em;background: #fff;box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);
  1497. transition: 0.3s;-webkit-transition: 0.3s;left: 0px;}
  1498. .switch2 > .switch-text {color:#898989;margin-left: 0.625em;}
  1499. .on>.switch-button {right:0px;left:auto;}
  1500. .on>.switch-text {color:#ffffff;margin-right: 0.625em; margin-left: 0px;}
  1501. .on {background-color:#008000;}
  1502. .crit{
  1503. height:24px;
  1504. position:relative;
  1505. animation:myfirst 1s;
  1506. -webkit-animation:myfirst 0.4s; /* Safari and Chrome */
  1507. }
  1508. @keyframes myfirst
  1509. {
  1510. 0% {background:red; left:0px; top:0px;}
  1511. 33% {background:red; left:0px; top:-14px;}
  1512. 66% {background:red; left:0px; top:14px;}
  1513. 100% {background:red; left:0px; top:0px;}
  1514. }
  1515.  
  1516. @-webkit-keyframes myfirst /* Safari and Chrome */
  1517. {
  1518. 0% {background:red; left:0px; top:0px;}
  1519. 33% {background:red; left:0px; top:-30px;}
  1520. 100% {background:red; left:0px; top:0px;}
  1521. }
  1522. .rainbow-text{
  1523. color:red;
  1524. background-image: repeating-linear-gradient(45deg, violet, indigo, blue, green, yellow, orange, red, violet);
  1525. background-size:800% 800%;
  1526. -webkit-background-clip: text;
  1527. -webkit-text-fill-color: transparent;
  1528. animation: rainbow 8s ease infinite;
  1529. -webkit-animation: rainbow 8s ease infinite;
  1530. }
  1531. @keyframes rainbow
  1532. {
  1533. 0%{background-position:0% 50%}
  1534. 50%{background-position:100% 25%}
  1535. 100%{background-position:0% 50%}
  1536. }`;
  1537. GM_addStyle(css);
  1538. npcs = GM_getValue("npcs", npcs);
  1539. pgoods = GM_getValue("goods", goods);
  1540. equip = GM_getValue(roleid + "_equip", equip);
  1541. //初始化角色配置
  1542. GI.configInit();
  1543. if (backimageurl != '') {
  1544. GM_addStyle(`body{background-color:rgb(0,0,0,.25)}
  1545. div{ opacity:1;}
  1546. html{background:rgba(255,255,255,0.25);
  1547. background-image:url('${backimageurl}');
  1548. background-repeat:no-repeat;
  1549. background-size:100% 100%;
  1550. -moz-background-size:100% 100%;} `);
  1551. }
  1552. color_select = GM_getValue("color_select", color_select);
  1553. let link = document.createElement("link");
  1554. link.rel = "stylesheet";
  1555. link.type = "text/css";
  1556. link.href = diff_colors[color_select];
  1557. let head = document.getElementsByTagName("head")[0];
  1558. head.appendChild(link);
  1559. setTimeout(() => {
  1560. try {
  1561. if (GM_registerMenuCommand) {
  1562. GM_registerMenuCommand("初始化", WG.update_id_all)
  1563. GM_registerMenuCommand("设 置", WG.setting)
  1564. GM_registerMenuCommand("调 试", WG.cmd_echo_button)
  1565. }
  1566. }
  1567. catch (e) {
  1568. }
  1569. role = role;
  1570. roleid = roleid;
  1571. var logintext = '';
  1572. document.title = role + "-MUD游戏-武神传说";
  1573. L.msg(`欢迎使用 ${welcome} 版本号${GM_info.script.version}`);
  1574. KEY.do_command("showtool");
  1575. KEY.do_command("pack");
  1576. KEY.do_command("score");
  1577. WG.SendCmd("score2");
  1578. WG.SendCmd("party load");
  1579. setTimeout(() => {
  1580. //bind settingbox
  1581. KEY.do_command("score");
  1582. var rolep = role;
  1583. if (G.level) {
  1584. rolep = G.level + role;
  1585. if (G.isGod()) {
  1586. $('.zdy-item.zdwk').html("修炼(Y)");
  1587. }
  1588. }
  1589. rolep = welcome + "" + rolep;
  1590. if (CanUse) {
  1591. if (shieldswitch == "开" || silence == '开') {
  1592. messageAppend('已注入屏蔽系统', 0, 1);
  1593. }
  1594. if (npcs['店小二'] == 0) {
  1595. logintext = `
  1596. <hiy>欢迎${rolep},插件已加载!第一次使用,请在设置中,初始化ID,并且设置一下是否自动婚宴,自动传送boss
  1597. 插件版本: ${GM_info.script.version}
  1598. </hiy>`;
  1599. } else {
  1600. $.get("https://wsmud.ii74.com/hello/" + role, (result) => {
  1601.  
  1602. let tmp = `
  1603. <hiy>欢迎${rolep},插件已加载!
  1604. 插件版本: ${GM_info.script.version}
  1605. 更新日志: ${result}
  1606. </hiy>`;
  1607. messageAppend(tmp);
  1608. });
  1609. }
  1610. WG.ztjk_func();
  1611. WG.zml_showp();
  1612. WG.dsj_func();
  1613. setTimeout(() => {
  1614. WG.wsdelaytest();
  1615. }, 1000)
  1616.  
  1617. if (G.level && G.isGod()) {
  1618. WG.ytjk_func()
  1619. }
  1620. } else {
  1621. logintext = `
  1622. <hiy>欢迎${role},插件未正常加载!
  1623. 当前浏览器不支持自动喜宴自动boss,请使用centbrowser浏览器
  1624. 谷歌系浏览器,请在network中勾选disable cache,多刷新几次,直至提示已加载!
  1625. 多次刷新无法仍然出现本提示,请打开tampermonkey 插件设置
  1626. 开启高级设置,在最下方实验 设置 “注入模式:即时”“严格模式:禁用”
  1627. 实在不会用加群交流
  1628. 插件版本: ${GM_info.script.version}
  1629. </hiy>`;
  1630. }
  1631. messageAppend(logintext);
  1632. }, 500);
  1633. KEY.do_command("showcombat");
  1634. //执行记忆面板
  1635. var closeBorad = localStorage.getItem("closeBorad");
  1636. if (closeBorad === "true") {
  1637. WG.showhideborad()
  1638. }
  1639. WG.runLoginhml();
  1640. //开启定时器
  1641. var systime = setInterval(() => {
  1642. var myDate = new Date();
  1643. let timeTips = {
  1644. data: JSON.stringify({
  1645. type: "time",
  1646. h: myDate.getHours(),
  1647. m: myDate.getMinutes(),
  1648. s: myDate.getSeconds(),
  1649. time: myDate.toTimeString()
  1650. })
  1651. };
  1652. WG.receive_message(timeTips);
  1653. }, 1000);
  1654. }, 1000);
  1655. },
  1656. update_goods_id: function () {
  1657. var lists = $(".dialog-list > .obj-list:first");
  1658. var id;
  1659. var name;
  1660. var gtype;
  1661. if (lists.length) {
  1662. messageAppend("检测到商品清单");
  1663. for (var a of lists.children()) {
  1664. a = $(a);
  1665. id = a.attr("obj");
  1666. name = $(a.children()[0]).html();
  1667.  
  1668. gtype = a.children()[0].localName;
  1669. if (name == "金创药" || name == "引气丹") {
  1670. if (pgoods[gtype + name]) {
  1671. pgoods[gtype + name].id = id;
  1672. } else {
  1673. pgoods[gtype + name] = {
  1674. "id": id,
  1675. "type": gtype,
  1676. "sales": "药铺老板 平一指",
  1677. "place": "扬州城-药铺"
  1678. }
  1679.  
  1680. }
  1681.  
  1682. }
  1683. else {
  1684. pgoods[name].id = id;
  1685. }
  1686. messageAppend(`<${gtype}>${name}</${gtype}>:${id}`);
  1687. }
  1688. GM_setValue("goods", pgoods);
  1689. return true;
  1690. } else {
  1691. messageAppend("未检测到商品清单");
  1692. return false;
  1693. }
  1694. },
  1695. update_npc_id: function () {
  1696. var lists = $(".room_items .room-item");
  1697.  
  1698. for (var npc of lists) {
  1699. if (npc.lastElementChild.innerText.indexOf("[") >= 0) {
  1700. if (npc.lastElementChild.lastElementChild.lastElementChild.lastElementChild == null) {
  1701. if (npc.lastElementChild.firstChild.nodeType == 3 &&
  1702. npc.lastElementChild.firstChild.nextSibling.tagName == "SPAN") {
  1703. npcs[npc.lastElementChild.innerText.split('[')[0]] = $(npc).attr("itemid");
  1704. messageAppend(npc.lastElementChild.innerText.split('[')[0] + " 的ID:" + $(npc).attr("itemid"));
  1705. }
  1706. }
  1707. } else {
  1708. if (npc.lastElementChild.lastElementChild == null) {
  1709. npcs[npc.lastElementChild.innerText] = $(npc).attr("itemid");
  1710. messageAppend(npc.lastElementChild.innerText + " 的ID:" + $(npc).attr("itemid"));
  1711. }
  1712. }
  1713. }
  1714. GM_setValue("npcs", npcs);
  1715. },
  1716. update_id_all: function () {
  1717.  
  1718. GM_setValue("goods", goods);
  1719. WG.SendCmd("stopstate")
  1720. var t = [];
  1721. Object.keys(pgoods).forEach(function (key) {
  1722. if (t[pgoods[key].place] == undefined)
  1723. t[pgoods[key].place] = pgoods[key].sales;
  1724. });
  1725. var keys = Object.keys(t);
  1726. var i = 0;
  1727. var state = 0;
  1728. var place, sales;
  1729. //获取
  1730. var timer = setInterval(() => {
  1731.  
  1732. switch (state) {
  1733. case 0:
  1734. if (i >= keys.length) {
  1735. messageAppend("初始化完成");
  1736. WG.go("武当派-广场");
  1737. clearInterval(timer);
  1738. return;
  1739. }
  1740. place = keys[i];
  1741. sales = t[place];
  1742. WG.go(place);
  1743. state = 1;
  1744. break;
  1745. case 1:
  1746. WG.update_npc_id();
  1747. var id = npcs[sales];
  1748. WG.Send("list " + id);
  1749. state = 2;
  1750. break;
  1751. case 2:
  1752. if (WG.update_goods_id()) {
  1753. state = 0;
  1754. i++;
  1755. } else
  1756. state = 1;
  1757. break;
  1758. }
  1759. }, 1000);
  1760. },
  1761. clean_id_all: function (jm = true) {
  1762. GM_setValue("goods", goods);
  1763. pgoods = goods
  1764. if (jm) {
  1765. alert("清空完毕,请刷新一下页面")
  1766. }
  1767. },
  1768. update_store_hook: undefined,
  1769. wsdelaytest: async function () {
  1770. G.wsdelaySetTime = new Date().getTime();
  1771. G.wsdelaySetCount = 1;
  1772. G.wsdelay = undefined;
  1773. WG.SendCmd("test");
  1774. },
  1775. update_store: async function () {
  1776. WG.update_store_hook = WG.add_hook(['dialog', 'text'], (data) => {
  1777. if (data.dialog == 'list' && data.max_store_count) {
  1778. messageAppend("<hio>仓库信息获取</hio>开始");
  1779. var stores = data.stores;
  1780. store_list = [];
  1781. for (let store of stores) {
  1782. store_list.push(store.name.toLowerCase());
  1783. }
  1784. zdy_item_store = store_list.join(',');
  1785. $('#store_info').val(zdy_item_store);
  1786. GM_setValue(roleid + "_zdy_item_store", zdy_item_store);
  1787. } else if (data.type == 'text' && data.msg == '没有这个玩家。') {
  1788. messageAppend("<hio>仓库信息获取</hio>完成");
  1789.  
  1790. $('.dialog-close').click();
  1791. WG.remove_hook(WG.update_store_hook);
  1792. WG.update_store_hook = undefined;
  1793. }
  1794. });
  1795. WG.SendCmd("$to 扬州城-广场;$to 扬州城-钱庄;look3 1");
  1796. },
  1797. clean_dps: function () {
  1798. if (dpslock && battletime != 0) {
  1799. let allpfmnum = pfmnum + criticalnum;
  1800. let alldps = pfmdps + critical;
  1801. let battle_t = (new Date().getTime() - battletime.getTime()) / 1000;
  1802.  
  1803. let real_dps = alldps / battle_t;
  1804. let real_act = allpfmnum / battle_t;
  1805. if (battle_t < 1) {
  1806. real_dps = alldps;
  1807. real_act = allpfmnum;
  1808. }
  1809. setTimeout(() => {
  1810. messageAppend(`⚔️战斗过程分析:
  1811. ⏱️战斗时长:${battle_t}秒
  1812. ⚔️普通攻击:${pfmnum}次
  1813. ⚔️普通伤害:${addChineseUnit(pfmdps)}
  1814. 🌟暴击攻击:${criticalnum}次
  1815. 🌟暴击伤害:${addChineseUnit(critical)}
  1816. ⚔️总计攻击:${(allpfmnum)}次
  1817. ⚔️总计伤害:${addChineseUnit(alldps)}
  1818. ⏱️每秒伤害:${addChineseUnit(real_dps)}
  1819. ⏱️每秒攻击:${Math.round(real_act)}次`, 4);
  1820. pfmdps = 0;
  1821. pfmnum = 0;
  1822. critical = 0;
  1823. criticalnum = 0;
  1824. dpslock = 0;
  1825. }, 100);
  1826.  
  1827.  
  1828.  
  1829. }
  1830. },
  1831. Send: async function (cmd) {
  1832. if (CanUse) {
  1833. send_cmd(cmd, true);
  1834. } else {
  1835. if (cmd) {
  1836. cmd = cmd instanceof Array ? cmd : cmd.split(';');
  1837. for (var c of cmd) {
  1838. $("span[WG='WG']").attr("cmd", c).click();
  1839. };
  1840. }
  1841. }
  1842. },
  1843. SendStep: async function (cmd) {
  1844. if (cmd) {
  1845. cmd = cmd instanceof Array ? cmd : cmd.split(';');
  1846. for (var c of cmd) {
  1847. WG.SendCmd(c);
  1848. await WG.sleep(12000);
  1849. };
  1850. }
  1851. },
  1852. SendCmd: async function (cmd) {
  1853. if (cmd) {
  1854. if (cmd.indexOf(",") >= 0) {
  1855. if (cmd instanceof Array) {
  1856. cmd = cmd;
  1857. } else {
  1858. if (cmd.indexOf(";") >= 0) {
  1859. cmd = cmd.split(";");
  1860. } else {
  1861. cmd = cmd.split(",");
  1862. }
  1863. }
  1864. } else {
  1865. cmd = cmd instanceof Array ? cmd : cmd.split(';');
  1866. }
  1867. let idx = 0;
  1868. let cmds = '';
  1869. for (var c of cmd) {
  1870. if (c.indexOf("$") >= 0) {
  1871. if (c[0] == "$") {
  1872. c = c.replace("$", "");
  1873. let p0 = c.split(" ")[0];
  1874. let p1 = c.split(" ")[1];
  1875. cmds = cmd.join(";");
  1876. eval("T." + p0 + "(" + idx + ",'" + p1 + "','" + cmds + "')");
  1877. return;
  1878. } else {
  1879. var p_c = c.split(" ");
  1880. p_c = p_c[p_c.length - 1];
  1881. // buy $sitem from $snpc
  1882. if (p_c) {
  1883. if (p_c[0] == "$") {
  1884. p_c = p_c.replace("$", "");
  1885. let patt = new RegExp(/\".*?\"/);
  1886. let result = patt.exec(p_c)[0];
  1887. cmds = cmd.join(";");
  1888. eval("T." + p_c.split('(')[0] + "(" + idx + "," + result + ",'" + cmds + "')");
  1889. return;
  1890. } else {
  1891. p_c = c.split(" ");
  1892. if (p_c[1].indexOf('$') >= 0) {
  1893. p_c = p_c[1].replace("$", "");
  1894. let patt = new RegExp(/\".*?\"/);
  1895. let result = patt.exec(p_c)[0];
  1896. cmds = cmd.join(";");
  1897. eval("T." + p_c.split('(')[0] + "(" + idx + "," + result + ",'" + cmds + "')");
  1898. return;
  1899. }
  1900. }
  1901. } else {
  1902.  
  1903. return;
  1904. }
  1905. }
  1906. }
  1907. //npc id解析
  1908. if (c.indexOf("%") >= 0) {
  1909. var rep = c.match("\%([^%]+)\%");
  1910. if (npcs[rep[1]] != undefined) {
  1911. var subStr = new RegExp('\%([^%]+)\%'); //创建正则表达式对象
  1912. c = c.replace(subStr, npcs[rep[1]]);
  1913. } else {
  1914. for (let item of roomData) {
  1915. if (item != 0) {
  1916. if (item.name.indexOf(rep[1]) >= 0) {
  1917. var subStr = new RegExp('\%([^%]+)\%');
  1918. c = c.replace(subStr, item.id);
  1919. break;
  1920. }
  1921. }
  1922. }
  1923. }
  1924. }
  1925. //商店 id解析
  1926. if (c.indexOf("*") >= 0) {
  1927. var rep = c.match("\\*([^%]+)\\*");
  1928. if (pgoods[rep[1]] != undefined) {
  1929. var subStr = new RegExp('\\*([^%]+)\\*');
  1930. c = c.replace(subStr, pgoods[rep[1]].id);
  1931. }
  1932. }
  1933.  
  1934. WG.Send(c);
  1935. idx = idx + 1;
  1936. };
  1937. }
  1938. },
  1939. sleep: function (time) {
  1940. return new Promise((resolve) => setTimeout(resolve, time));
  1941. },
  1942. stopAllAuto: function () {
  1943. stopauto = true;
  1944. },
  1945. reSetAllAuto: function () {
  1946. stopauto = false;
  1947. },
  1948. go: async function (p) {
  1949. if (saveAddr == '开' && p == '扬州城-钱庄') {
  1950. p = '住房-卧室'
  1951. }
  1952. if (needfind[p] == undefined) {
  1953. if (WG.at(p)) {
  1954. return;
  1955. }
  1956. }
  1957. if (place[p] != undefined) {
  1958. G.ingo = true;
  1959. await WG.SendCmd(place[p]);
  1960. G.ingo = false;
  1961. }
  1962. },
  1963. at: function (p) {
  1964. if (saveAddr == '开' && p == '扬州城-钱庄') {
  1965. p = '住房-卧室'
  1966. }
  1967. var w = $(".room-name").html();
  1968. return w.indexOf(p) == -1 ? false : true;
  1969. },
  1970.  
  1971. getIdByName: function (n) {
  1972. for (let i = 0; i < roomData.length; i++) {
  1973. if (roomData[i].name && roomData[i].name.indexOf(n) >= 0) {
  1974. return roomData[i].id;
  1975. }
  1976. }
  1977. return null;
  1978. },
  1979. smhook: undefined,
  1980. ythook: undefined,
  1981. ungetStore: false,
  1982. kala_count: 0,
  1983.  
  1984. doSmTask: async function (action) {
  1985. return new Promise(async (resolve) => {
  1986. try {
  1987. switch (action) {
  1988. case 0:
  1989. //前往师门接收任务
  1990. WG.go(sm_array[family].place);
  1991. WG.sm_state = 1;
  1992.  
  1993. // 如果kala_count大于5,则重置id
  1994. if (WG.kala_count > 2) {
  1995. WG.clean_id_all(false);
  1996. if (WG.kala_count > 5) {
  1997. WG.kala_count = 0;
  1998. WG.sm_state = 0;
  1999. $(".sm_button").text("师门(Q)");
  2000. messageAppend('错误:师门任务错误,脚本将重试')
  2001. }
  2002. }
  2003. resolve();
  2004. break;
  2005. case 1:
  2006. // 接受任务
  2007. var lists = $(".room_items .room-item");
  2008. var id = null;
  2009. for (var npc of lists) {
  2010. if (npc.lastElementChild.innerText.indexOf("[") >= 0) {
  2011. if (npc.lastElementChild.lastElementChild.lastElementChild.lastElementChild == null) {
  2012. if (npc.lastElementChild.firstChild.nodeType == 3 &&
  2013. npc.lastElementChild.firstChild.nextSibling.tagName == "SPAN") {
  2014. if (npc.lastElementChild.innerText.split('[')[0] == sm_array[family].npc)
  2015. id = $(npc).attr("itemid");
  2016. }
  2017. }
  2018. } else {
  2019. if (npc.lastElementChild.lastElementChild == null) {
  2020. if (npc.lastElementChild.innerText == sm_array[family].npc) {
  2021. id = $(npc).attr("itemid");
  2022. }
  2023. }
  2024. }
  2025. }
  2026. if (id != undefined) {
  2027. WG.Send("task sm " + id);
  2028. WG.Send("task sm " + id);
  2029. WG.sm_state = 2;
  2030. } else {
  2031. WG.update_npc_id();
  2032. WG.clean_id_all(false);
  2033. WG.sm_state = 0;
  2034. WG.kala_count = WG.kala_count + 1;
  2035. }
  2036. resolve();
  2037. break;
  2038. case 2:
  2039. // 获取师门任务物品
  2040. var mysm_loser = GM_getValue(roleid + "_sm_loser", sm_loser);
  2041. //获取师门任务物品
  2042. var item = $("span[cmd$='giveup']:last").parent().prev();
  2043. if (item.length == 0) {
  2044. WG.sm_state = 0;
  2045. WG.kala_count = WG.kala_count + 1
  2046. };
  2047. var itemName = item.html();
  2048. let _gtype = item[0].localName;
  2049. item = item[0].outerHTML;
  2050.  
  2051. if (WG.ungetStore) {
  2052. if (mysm_loser == "开") {
  2053. $("span[cmd$='giveup']:last").click();
  2054. messageAppend("放弃任务");
  2055. WG.ungetStore = false;
  2056. WG.sm_state = 0;
  2057. WG.kala_count = 0;
  2058. resolve()
  2059. break;
  2060. } else if (mysm_loser == "关") {
  2061. WG.sm_state = -1;
  2062. WG.kala_count = 0;
  2063. $(".sm_button").text("师门(Q)");
  2064. resolve()
  2065. break;
  2066. }
  2067. }
  2068. //能上交直接上交
  2069. var tmpObj = $("span[cmd$='giveup']:last").prev();
  2070. for (let i = 0; i < 6; i++) {
  2071. if (tmpObj.children().html()) {
  2072. if (tmpObj.html().indexOf(item) >= 0) {
  2073. tmpObj.click();
  2074. messageAppend("自动上交" + item);
  2075. WG.sm_state = 0;
  2076. WG.kala_count = 0;
  2077. resolve()
  2078. return;
  2079. }
  2080. tmpObj = tmpObj.prev();
  2081. }
  2082. }
  2083. //不能上交自动购买
  2084. if (itemName == "金创药" || itemName == "引气丹") {
  2085. WG.sm_item = pgoods[_gtype + itemName];
  2086. } else {
  2087. WG.sm_item = pgoods[itemName];
  2088. }
  2089.  
  2090. if (item != undefined) {
  2091. WG.sm_itemx = item;
  2092. if (WG.inArray(item, store_list) && sm_getstore == "开") {
  2093. if (item.indexOf("hiz") >= 0 || item.indexOf("hio") >= 0) {
  2094. sm_any = GM_getValue(roleid + "_sm_any", sm_any);
  2095. if (sm_any == "开") {
  2096. messageAppend("自动仓库取" + item);
  2097. WG.sm_store = item;
  2098. WG.sm_state = 4;
  2099. resolve()
  2100. return;
  2101. } else {
  2102. var a = window.confirm("您确定要交稀有物品吗");
  2103. if (a) {
  2104. messageAppend("自动仓库取" + item);
  2105. WG.sm_store = item;
  2106. WG.sm_state = 4;
  2107. resolve()
  2108. return;
  2109. }
  2110. }
  2111. } else {
  2112. messageAppend("自动仓库取" + item);
  2113. WG.sm_store = item;
  2114. WG.sm_state = 4;
  2115. resolve()
  2116. return;
  2117. }
  2118. }
  2119. }
  2120. if (WG.sm_item != undefined && item.indexOf(WG.sm_item.type) >= 0) {
  2121.  
  2122. if (WG.smbuyNum == null) {
  2123. WG.smbuyNum = 0;
  2124.  
  2125. WG.kala_count = WG.kala_count + 1;
  2126. } else if (WG.smbuyNum > 3) {
  2127. WG.sm_state = 5;
  2128. }
  2129.  
  2130. WG.go(WG.sm_item.place);
  2131. messageAppend("自动购买" + item);
  2132. WG.sm_state = 3;
  2133. } else {
  2134.  
  2135. WG.sm_state = 5;
  2136. }
  2137. resolve();
  2138. break;
  2139. case 3:
  2140. // 前往商店购买任务物品
  2141. WG.go(WG.sm_item.place);
  2142. if (WG.buy(WG.sm_item)) {
  2143. WG.sm_state = 0;
  2144. if (WG.smbuyNum == 0) {
  2145. WG.lastBuy = WG.sm_item
  2146. }
  2147. if (WG.lastBuy == WG.sm_item) {
  2148. WG.smbuyNum = WG.smbuyNum + 1;
  2149. }
  2150. }
  2151. resolve();
  2152. break;
  2153. case 4:
  2154. // 前往钱庄取出仓库中的任务物品
  2155. var mysm_loser = GM_getValue(roleid + "_sm_loser", sm_loser);
  2156. WG.go("扬州城-钱庄");
  2157. WG.qu(WG.sm_store, (res) => {
  2158. if (res) {
  2159. WG.sm_state = 0;
  2160. } else {
  2161. messageAppend("无法取" + WG.sm_store);
  2162. if (WG.sm_item != undefined && WG.sm_store.indexOf(WG.sm_item.type) >= 0) {
  2163. WG.go(WG.sm_item.place);
  2164. messageAppend("自动购买" + WG.sm_store);
  2165. WG.sm_state = 3;
  2166. } else {
  2167. if (mysm_loser == "开") {
  2168. WG.ungetStore = true;
  2169. WG.sm_state = 0;
  2170. } else {
  2171. WG.sm_state = 5;
  2172. // $(".sm_button").text("师门(Q)");
  2173. }
  2174. }
  2175. }
  2176. resolve();
  2177.  
  2178. });
  2179. break;
  2180. case 5:
  2181. // 判断是否需要上交牌子
  2182. var mysm_loser = GM_getValue(roleid + "_sm_loser", sm_loser);
  2183. if (sm_price == "开") {
  2184. let pz = [{}, {}, {}, {}, {}]
  2185. tmpObj = $("span[cmd$='giveup']:last").prev();
  2186. for (let i = 0; i < 6; i++) {
  2187. if (tmpObj.children().html()) {
  2188. if (tmpObj.html().indexOf('放弃') == -1 &&
  2189. tmpObj.html().indexOf('令牌') >= 0) {
  2190. if (tmpObj.html().indexOf('hig') >= 0) {
  2191. pz[0] = tmpObj;
  2192. }
  2193. if (tmpObj.html().indexOf('hic') >= 0) {
  2194. pz[1] = tmpObj;
  2195. }
  2196. if (tmpObj.html().indexOf('hiy') >= 0) {
  2197. pz[2] = tmpObj;
  2198. }
  2199. if (tmpObj.html().indexOf('hiz') >= 0) {
  2200. pz[3] = tmpObj;
  2201. }
  2202. if (tmpObj.html().indexOf('hio') >= 0) {
  2203. pz[4] = tmpObj;
  2204. }
  2205. }
  2206. }
  2207. tmpObj = tmpObj.prev();
  2208. }
  2209. let _p = false;
  2210. for (let p of pz) {
  2211. if (p.html != undefined) {
  2212. p.click();
  2213. messageAppend("自动上交牌子");
  2214. WG.sm_state = 0;
  2215.  
  2216. WG.kala_count = 0;
  2217. _p = true;
  2218. resolve()
  2219. return;
  2220. }
  2221. }
  2222. if (!_p) {
  2223. messageAppend("没有牌子并且无法购买");
  2224. WG.smbuyNum = null;
  2225. if (mysm_loser == "开") {
  2226. $("span[cmd$='giveup']:last").click();
  2227. messageAppend("放弃任务");
  2228. WG.sm_state = 0;
  2229. WG.kala_count = 0;
  2230. resolve()
  2231. return;
  2232. } else {
  2233. WG.sm_state = -1;
  2234. $(".sm_button").text("师门(Q)");
  2235. resolve()
  2236. return;
  2237. }
  2238. }
  2239. }
  2240. else {
  2241. messageAppend("无法提交" + WG.sm_itemx);
  2242. WG.smbuyNum = null;
  2243. if (mysm_loser == "关") {
  2244. WG.sm_state = -1;
  2245. $(".sm_button").text("师门(Q)");
  2246. } else if (mysm_loser == "开") {
  2247. $("span[cmd$='giveup']:last").click();
  2248. messageAppend("放弃任务");
  2249. WG.sm_state = 0;
  2250.  
  2251. WG.kala_count = 0;
  2252. }
  2253. }
  2254. resolve();
  2255. break;
  2256. default:
  2257. break;
  2258. }
  2259. } catch (e) {
  2260. console.error(e);
  2261. resolve();
  2262. }
  2263. });
  2264. },
  2265.  
  2266. smTask: async function () {
  2267. if (!WG.smhook) {
  2268. WG.smhook = WG.add_hook('text', function (data) {
  2269. if (data.msg.indexOf("辛苦了, 你先去休息") >= 0 ||
  2270. data.msg.indexOf("和本门毫无瓜葛") >= 0 ||
  2271. data.msg.indexOf("你没有") >= 0
  2272. ) {
  2273. WG.Send("taskover signin");
  2274. WG.sm_state = -1;
  2275. $(".sm_button").text("师门(Q)");
  2276. WG.remove_hook(WG.smhook);
  2277. WG.smhook = undefined;
  2278. }
  2279. });
  2280. }
  2281. while (WG.sm_state != -1) {
  2282. try {
  2283. await WG.doSmTask(WG.sm_state);
  2284. await WG.sleep(1000);
  2285. } catch (e) {
  2286. console.error(e);
  2287. break;
  2288. }
  2289. }
  2290. },
  2291.  
  2292. sm_button: async function () {
  2293. if (WG.sm_state >= 0) {
  2294. WG.sm_state = -1;
  2295. $(".sm_button").text("师门(Q)");
  2296. } else {
  2297. WG.sm_state = 0;
  2298. $(".sm_button").text("停止(Q)");
  2299. await WG.smTask()
  2300. }
  2301. },
  2302. buy: function (good) {
  2303. var tmp = npcs[good.sales];
  2304. if (tmp == undefined) {
  2305. WG.update_npc_id();
  2306. return false;
  2307. }
  2308. WG.Send("list " + tmp);
  2309. WG.Send("buy 1 " + good.id + " from " + tmp);
  2310. return true;
  2311. },
  2312. qu_hook: undefined,
  2313. qu: function (good, callback) {
  2314.  
  2315. let storestatus = false;
  2316. // $(".obj-item").each(function () {
  2317. // if ($(this).html().toLowerCase().indexOf(good) != -1) {
  2318. // storestatus = true;
  2319. // var id = $(this).attr("obj")
  2320. // WG.Send("qu 1 " + id);
  2321. // return;
  2322. // }
  2323. // })
  2324. WG.qu_hook = WG.add_hook("dialog", async function (data) {
  2325. if (data.dialog != undefined & data.stores != undefined) {
  2326. for (let item of data.stores) {
  2327. if (item.name.toLocaleLowerCase().indexOf(good) != -1) {
  2328. storestatus = true;
  2329. var id = item.id;
  2330. WG.Send("qu 1 " + id);
  2331. break;
  2332. }
  2333. }
  2334. setTimeout(() => {
  2335. callback(storestatus);
  2336. }, 300);
  2337. WG.remove_hook(WG.qu_hook)
  2338. WG.qu_hook = undefined;
  2339. }
  2340. });
  2341.  
  2342. WG.SendCmd('store')
  2343. },
  2344. Give: function (items) {
  2345. var tmp = npcs["店小二"];
  2346. if (tmp == undefined) {
  2347. WG.update_npc_id();
  2348. return false;
  2349. }
  2350. WG.Send("give " + tmp + " " + items);
  2351. return true;
  2352. },
  2353. eq: function (e) {
  2354. WG.Send("eq " + equip[e]);
  2355. },
  2356. ask: function (npc, i) {
  2357. npc = npcs[npc];
  2358. npc != undefined ? WG.Send("ask" + i + " " + npc) : WG.update_npc_id();
  2359. },
  2360. yamen_lister: undefined,
  2361. yamen_err_no: 0,
  2362. go_yamen_task: async function () {
  2363. if (!WG.yamen_lister) {
  2364. WG.yamen_lister = WG.add_hook('text', function (data) {
  2365. if (data.msg.indexOf("最近没有在逃的逃犯了,你先休息下吧。") >= 0) {
  2366. clearInterval(WG.check_yamen_task);
  2367. WG.check_yamen_task = 'over';
  2368. WG.remove_hook(WG.yamen_lister);
  2369. WG.yamen_lister = undefined;
  2370. WG.yamen_err_no = 0;
  2371. } else if (data.msg.indexOf("没有这个人") >= 0) {
  2372. WG.update_npc_id();
  2373. }
  2374. });
  2375. }
  2376. WG.go("扬州城-衙门正厅");
  2377. await WG.sleep(200);
  2378. WG.update_npc_id();
  2379. WG.ask("扬州知府 程药发", 1);
  2380. if (WG.check_yamen_task == 'over') {
  2381. return;
  2382. }
  2383. window.setTimeout(WG.check_yamen_task, 1000);
  2384. },
  2385. check_yamen_task: function () {
  2386. if (WG.check_yamen_task == 'over') {
  2387. return;
  2388. }
  2389. messageAppend("查找任务中");
  2390. var task = $(".task-desc:eq(-2)").text();
  2391. for (let idx = 3; idx < 10; idx++) {
  2392. if (task.indexOf("扬州知府") == -1) {
  2393. task = $(".task-desc:eq(-" + idx + ")").text();
  2394. } else {
  2395. break;
  2396. }
  2397. }
  2398.  
  2399. if (task.length == 0) {
  2400. KEY.do_command("tasks");
  2401. window.setTimeout(WG.check_yamen_task, 1000);
  2402. return;
  2403. }
  2404. try {
  2405. zb_npc = task.match("犯:([^%]+),据")[1];
  2406. zb_place = task.match("在([^%]+)出")[1];
  2407. messageAppend("追捕任务:" + zb_npc + " 地点:" + zb_place);
  2408. KEY.do_command("score");
  2409. WG.go(zb_place);
  2410. window.setTimeout(WG.check_zb_npc, 1000);
  2411. } catch (error) {
  2412. messageAppend("查找衙门追捕失败");
  2413. if (WG.yamen_err_no < 4) {
  2414. KEY.do_command("tasks");
  2415. window.setTimeout(WG.check_yamen_task, 1000);
  2416. WG.yamen_err_no = WG.yamen_err_no + 1;
  2417. } else {
  2418. clearInterval(WG.check_yamen_task);
  2419. WG.remove_hook(WG.yamen_lister);
  2420. WG.yamen_lister = undefined;
  2421. WG.yamen_err_no = 0;
  2422. }
  2423.  
  2424. }
  2425. },
  2426. zb_next: 0,
  2427. check_zb_npc: function () {
  2428. var lists = $(".room_items .room-item");
  2429. var found = false;
  2430.  
  2431. for (var npc of lists) {
  2432. if (npc.innerText.indexOf(zb_npc) != -1) {
  2433. found = true;
  2434. WG.Send("kill " + $(npc).attr("itemid"));
  2435. messageAppend("找到" + zb_npc + ",自动击杀!!!");
  2436. WG.zb_next = 0;
  2437. return;
  2438. }
  2439. }
  2440. var fj = needfind[zb_place];
  2441. if (!found && needfind[zb_place] != undefined && WG.zb_next < fj.length) {
  2442. messageAppend("寻找附近");
  2443. WG.Send(fj[WG.zb_next]);
  2444. WG.zb_next++;
  2445. }
  2446. if (!found) {
  2447. window.setTimeout(WG.check_zb_npc, 1000);
  2448. }
  2449. },
  2450. kill_all: function () {
  2451. var lists = $(".room_items .room-item");
  2452. for (var npc of lists) {
  2453. if ($(npc).html().indexOf("尸体") == -1) {
  2454. WG.Send("kill " + $(npc).attr("itemid"));
  2455. }
  2456. }
  2457. },
  2458. get_all: function () {
  2459. var lists = $(".room_items .room-item");
  2460. for (var npc of lists) {
  2461. WG.Send("get all from " + $(npc).attr("itemid"));
  2462. }
  2463. },
  2464. clean_all: function () {
  2465. WG.go("扬州城-打铁铺");
  2466. WG.Send("sell all");
  2467. },
  2468. sort_hook: undefined,
  2469. sort_all: function () {
  2470.  
  2471. var storeset = [
  2472. ];
  2473. if (WG.sort_hook) {
  2474. messageAppend("<hio>仓库排序</hio>运行中");
  2475. messageAppend("<hio>仓库排序</hio>手动结束");
  2476. WG.remove_hook(WG.sort_hook);
  2477. WG.sort_hook = undefined;
  2478. return;
  2479. }
  2480. var sortCmd = "";
  2481. var getandstore = function (set) {
  2482.  
  2483. var cmds = [];
  2484. for (let s of set) {
  2485. cmds.push("qu " + s.count + " " + s.id + ";$wait 350;");
  2486. }
  2487. set = set.sort(function (a, b) {
  2488. return a.name.length - b.name.length;
  2489. })
  2490. for (let s of set) {
  2491. cmds.push("store " + s.count + " " + s.id + ";$wait 350;");
  2492. }
  2493. return cmds.join("");
  2494. }
  2495. WG.sort_hook = WG.add_hook(['dialog', 'text'], (data) => {
  2496. if (data.type == 'dialog' && data.dialog == 'list') {
  2497. if (data.stores == undefined) {
  2498. return;
  2499. }
  2500. const colorSet = ['wht', 'hig', 'hic', 'hiy', 'hiz', 'hio', 'red', 'hir', 'ord'];
  2501.  
  2502. for (let store of data.stores) {
  2503. let num = 0;
  2504. for (let cx of colorSet) {
  2505. if (store.name.toLocaleLowerCase().indexOf(cx) >= 0) {
  2506. if (storeset[num]) {
  2507. storeset[num].push(store);
  2508. } else {
  2509. storeset[num] = [store];
  2510. }
  2511. }
  2512. num++;
  2513. }
  2514.  
  2515. }
  2516. for (let item of storeset) {
  2517. if (item) {
  2518. sortCmd += getandstore(item);
  2519. }
  2520. }
  2521. sortCmd += "look3 1";
  2522. WG.SendCmd(sortCmd);
  2523. } else if (data.type == 'text' && data.msg == '没有这个玩家。') {
  2524. messageAppend("<hio>仓库排序</hio>完成");
  2525. WG.remove_hook(WG.sort_hook);
  2526. WG.sort_hook = undefined;
  2527. }
  2528.  
  2529. });
  2530. messageAppend("<hio>仓库排序</hio>开始");
  2531. if (WG.at("扬州城-钱庄")) {
  2532. WG.Send("store");
  2533. } else {
  2534. WG.go("扬州城-钱庄");
  2535. }
  2536. },
  2537. sort_all_bag: function () {
  2538.  
  2539. var storeset = [
  2540. ];
  2541. if (WG.sort_hook) {
  2542. messageAppend("<hio>背包排序</hio>运行中");
  2543. messageAppend("<hio>背包排序</hio>手动结束");
  2544. WG.remove_hook(WG.sort_hook);
  2545. WG.sort_hook = undefined;
  2546. return;
  2547. }
  2548. var sortCmd = "";
  2549. var getandstore = function (set) {
  2550.  
  2551. var cmds = [];
  2552. for (let s of set) {
  2553. cmds.push("store " + s.count + " " + s.id + ";$wait 350;");
  2554. }
  2555. set = set.sort(function (a, b) {
  2556. return a.name.length - b.name.length;
  2557. })
  2558. for (let s of set) {
  2559. cmds.push("qu " + s.count + " " + s.id + ";$wait 350;");
  2560. }
  2561. return cmds.join("");
  2562. }
  2563. WG.sort_hook = WG.add_hook(['dialog', 'text'], (data) => {
  2564. if (data.type == 'dialog' && data.dialog == 'pack') {
  2565. if (data.items == undefined) {
  2566. return;
  2567. }
  2568. const colorSet = ['wht', 'hig', 'hic', 'hiy', 'hiz', 'hio', 'red', 'hir', 'ord'];
  2569.  
  2570. for (let store of data.items) {
  2571. let num = 0;
  2572. for (let cx of colorSet) {
  2573. if (store.name.toLocaleLowerCase().indexOf(cx) >= 0) {
  2574. if (storeset[num]) {
  2575. storeset[num].push(store);
  2576. } else {
  2577. storeset[num] = [store];
  2578. }
  2579. }
  2580. num++;
  2581. }
  2582. }
  2583. for (let item of storeset) {
  2584. if (item) {
  2585. sortCmd += getandstore(item);
  2586. }
  2587. }
  2588. sortCmd += "look3 1";
  2589. WG.SendCmd(sortCmd);
  2590. } else if (data.type == 'text' && data.msg == '没有这个玩家。') {
  2591. messageAppend("<hio>背包排序</hio>完成,执行后请刷新并重新登录");
  2592. WG.remove_hook(WG.sort_hook);
  2593. WG.sort_hook = undefined;
  2594. }
  2595.  
  2596. });
  2597. messageAppend("<hio>背包排序</hio>开始");
  2598. if (WG.at("扬州城-钱庄")) {
  2599. WG.Send("pack");
  2600. KEY.dialog_close();
  2601. //WG.Send("store");
  2602. } else {
  2603. WG.go("扬州城-钱庄");
  2604. }
  2605. },
  2606. packup_listener: null,
  2607. packup_ready: false,
  2608. sell_all: function (store = 1, fenjie = 1, drop = 1) {
  2609. if (WG.packup_listener) {
  2610. messageAppend("<hio>包裹整理</hio>运行中");
  2611. messageAppend("<hio>包裹整理</hio>手动结束");
  2612. WG.packup_ready = false;
  2613. WG.remove_hook(WG.packup_listener);
  2614. WG.packup_listener = undefined;
  2615. return;
  2616. }
  2617.  
  2618. let stores = [];
  2619. WG.packup_listener = WG.add_hook(["dialog", "text"], (data) => {
  2620. if (data.type == "dialog" && data.dialog == "list") {
  2621. if (data.stores == undefined || WG.packup_ready) {
  2622. return;
  2623. }
  2624. stores = [];
  2625. //去重
  2626. for (let i = 0; i < data.stores.length; i++) {
  2627. let s = null;
  2628. for (let j = 0; j < stores.length; j++) {
  2629. if (stores[j].name == data.stores[i].name.toLowerCase()) {
  2630. s = stores[j];
  2631. break;
  2632. }
  2633. }
  2634. if (s != null) {
  2635. s.count += data.stores[i].count;
  2636. } else {
  2637. stores.push(data.stores[i]);
  2638. }
  2639. }
  2640. } else if (data.type == "dialog" && data.dialog == "pack") {
  2641. let cmds = [];
  2642. let dropcmds = [];
  2643. if (data.items == undefined || WG.packup_ready) {
  2644. return;
  2645. }
  2646. for (var i = 0; i < data.items.length; i++) {
  2647. //仓库
  2648. if (store_list.length != 0) {
  2649. if (WG.inArray(data.items[i].name.toLowerCase(), store_list) && store) {
  2650. if (data.items[i].can_eq) {
  2651. //装备物品,不能叠加,计算总数
  2652. let store = null;
  2653. for (let j = 0; j < stores.length; j++) {
  2654. if (stores[j].name == data.items[i].name.toLowerCase()) {
  2655. store = stores[j];
  2656. break;
  2657. }
  2658. }
  2659. if (store != null) {
  2660. if (store.count < 4) {
  2661. store.count += data.items[i].count;
  2662. cmds.push("store " + data.items[i].count + " " + data.items[i].id);
  2663. cmds.push("$wait 350");
  2664. messageAppend("<hio>包裹整理</hio>" + data.items[i].name + "储存到仓库");
  2665. } else {
  2666. messageAppend("<hio>包裹整理</hio>" + data.items[i].name + "超过设置的储存上限");
  2667. }
  2668. } else {
  2669. stores.push(data.items[i]);
  2670. cmds.push("store " + data.items[i].count + " " + data.items[i].id);
  2671. cmds.push("$wait 350");
  2672. messageAppend("<hio>包裹整理</hio>" + data.items[i].name + "储存到仓库");
  2673. }
  2674. } else {
  2675. cmds.push("store " + data.items[i].count + " " + data.items[i].id);
  2676. cmds.push("$wait 350");
  2677. messageAppend("<hio>包裹整理</hio>" + data.items[i].name + "储存到仓库");
  2678. }
  2679. }
  2680. }
  2681. //丢弃
  2682. if (WG.inArray(data.items[i].name.toLowerCase(), drop_list) && drop && (data.items[i].name.indexOf("★") == -1 || data.items[i].name.indexOf("☆") == -1)) {
  2683. if (lock_list.indexOf(data.items[i].name.toLowerCase()) >= 0) { continue; }
  2684. if (data.items[i].count == 1) {
  2685. dropcmds.push("drop " + data.items[i].id);
  2686. dropcmds.push("$wait 350");
  2687. } else {
  2688. dropcmds.push("drop " + data.items[i].count + " " + data.items[i].id);
  2689. dropcmds.push("$wait 350");
  2690. }
  2691.  
  2692.  
  2693. messageAppend("<hio>包裹整理</hio>" + data.items[i].name + "丢弃");
  2694.  
  2695. }
  2696. //分解
  2697. if (fenjie_list.length && WG.inArray(data.items[i].name.toLowerCase(), fenjie_list) && data.items[i].name.indexOf("★") == -1 && fenjie) {
  2698. cmds.push("fenjie " + data.items[i].id);
  2699. cmds.push("$wait 350");
  2700. messageAppend("<hio>包裹整理</hio>" + data.items[i].name + "分解");
  2701.  
  2702. }
  2703. }
  2704. cmds.push("$wait 1000")
  2705. cmds.push("$to 扬州城-杂货铺");
  2706. cmds.push("sell all");
  2707. cmds.push("$wait 1000");
  2708. cmds = cmds.concat(dropcmds);
  2709. // cmds.push("$zxbuy");
  2710. cmds.push("look3 1");
  2711. if (cmds.length > 0 || WG.packup_ready) {
  2712. WG.SendCmd(cmds);
  2713. WG.packup_ready = true;
  2714. }
  2715. } else if (data.type == 'text' && data.msg == '没有这个玩家。') {
  2716.  
  2717. messageAppend("<hio>包裹整理</hio>完成");
  2718. WG.packup_ready = false;
  2719. WG.remove_hook(WG.packup_listener);
  2720. WG.packup_listener = undefined;
  2721. }
  2722. });
  2723.  
  2724. messageAppend("<hio>包裹整理</hio>开始");
  2725.  
  2726. WG.go("扬州城-钱庄");
  2727. WG.Send("store;pack");
  2728. },
  2729. cmd_echo_button: function () {
  2730. if (G.cmd_echo) {
  2731. G.cmd_echo = false;
  2732. messageAppend("<hio>命令代码关闭</hio>");
  2733. } else {
  2734. G.cmd_echo = true;
  2735. ProConsole.init();
  2736. messageAppend("<hio>命令代码显示</hio>");
  2737. }
  2738. },
  2739. getItemNameByid: (id, callback) => {
  2740. packData.forEach(function (item) {
  2741. if (item != 0) {
  2742. if (item.id == id) {
  2743. callback(item.name);
  2744. return;
  2745. }
  2746. }
  2747. })
  2748. },
  2749. addstore: (itemname) => {
  2750. if (zdy_item_store2 == "") {
  2751. zdy_item_store2 = itemname;
  2752. } else {
  2753. zdy_item_store2 = zdy_item_store2 + "," + itemname;
  2754. }
  2755. GM_setValue(roleid + "_zdy_item_store2", zdy_item_store2);
  2756.  
  2757. $('#store_info2').val(zdy_item_store2);
  2758.  
  2759. if (zdy_item_store2) {
  2760. store_list = zdy_item_store2.split(",");
  2761. }
  2762.  
  2763. messageAppend("添加存仓成功" + itemname);
  2764. },
  2765. addlock: (itemname) => {
  2766. if (zdy_item_lock == "") {
  2767. zdy_item_lock = itemname;
  2768. } else {
  2769. zdy_item_lock = zdy_item_lock + "," + itemname;
  2770. }
  2771. GM_setValue(roleid + "_zdy_item_lock", zdy_item_lock);
  2772.  
  2773. $('#lock_info').val(zdy_item_lock);
  2774.  
  2775. if (zdy_item_lock) {
  2776. lock_list = zdy_item_lock.split(",");
  2777. }
  2778.  
  2779. messageAppend("添加物品锁成功" + itemname);
  2780. },
  2781. dellock: (itemname) => {
  2782. lock_list.remove(itemname);
  2783. zdy_item_lock = lock_list.join(',');
  2784. GM_setValue(roleid + "_zdy_item_lock", zdy_item_lock);
  2785.  
  2786. $('#lock_info').val(zdy_item_lock);
  2787.  
  2788. messageAppend("解锁物品锁成功" + itemname);
  2789. },
  2790. addfenjieid: (itemname) => {
  2791. if (zdy_item_fenjie == "") {
  2792. zdy_item_fenjie = itemname;
  2793. } else {
  2794. zdy_item_fenjie = zdy_item_fenjie + "," + itemname;
  2795. }
  2796. GM_setValue(roleid + "_zdy_item_fenjie", zdy_item_fenjie);
  2797.  
  2798.  
  2799. if (zdy_item_fenjie) {
  2800. fenjie_list = zdy_item_fenjie.split(",");
  2801. }
  2802. messageAppend("添加分解成功" + itemname);
  2803.  
  2804. $('#store_fenjie_info').val(zdy_item_fenjie);
  2805. },
  2806. adddrop: (itemname) => {
  2807. if (itemname.indexOf("hio") >= 0 || itemname.indexOf("hir") >= 0 || itemname.indexOf("ord") >= 0) {
  2808. messageAppend("高级物品,不添加整理时丢弃" + itemname);
  2809. return;
  2810. }
  2811. if (zdy_item_drop == "") {
  2812. zdy_item_drop = itemname;
  2813. } else {
  2814. zdy_item_drop = zdy_item_drop + "," + itemname;
  2815. }
  2816. GM_setValue(roleid + "_zdy_item_drop", zdy_item_drop);
  2817. if (zdy_item_drop) {
  2818. drop_list = zdy_item_drop.split(",");
  2819. }
  2820. messageAppend("添加丢弃成功" + itemname);
  2821.  
  2822. $('#store_drop_info').val(zdy_item_drop);
  2823. },
  2824. addzxbuy: (itemname) => {
  2825. if (itemname.indexOf("hio") >= 0 || itemname.indexOf("hir") >= 0 || itemname.indexOf("ord") >= 0) {
  2826. messageAppend("高级物品,不添加" + itemname);
  2827. return;
  2828. }
  2829. if (auto_skillPaperSelllist == "") {
  2830. auto_skillPaperSelllist = itemname;
  2831. } else {
  2832. auto_skillPaperSelllist = auto_skillPaperSelllist + "," + itemname;
  2833. }
  2834. GM_setValue(roleid + "_auto_skillPaperSelllist", auto_skillPaperSelllist);
  2835.  
  2836. messageAppend("添加成功" + itemname);
  2837.  
  2838. $('#autoSkillPaperSell').val(auto_skillPaperSelllist);
  2839. },
  2840. zdwk: async function (v, x = true) {
  2841. if (x) {
  2842. if (G.level) {
  2843. if (G.isGod()) {
  2844. WG.go("住房-练功房");
  2845. WG.Send("xiulian");
  2846. return;
  2847. }
  2848. }
  2849. }
  2850. if (CanUse) {
  2851. if (v == "remove") {
  2852. if (G.wk_listener) {
  2853. WG.remove_hook(G.wk_listener);
  2854. G.wk_listener = undefined;
  2855. }
  2856. return;
  2857. }
  2858. if (G.wk_listener) return;
  2859. let tiejiang_id;
  2860. let wk_busy = false;
  2861. G.wk_listener = WG.add_hook(["dialog", "text"], async function (data) {
  2862. if (data.type == "dialog" && data.dialog == "pack") {
  2863. //检查是否装备铁镐
  2864. let tiegao_id;
  2865. if (data.name) {
  2866. if (data.name == "<wht>铁镐</wht>") {
  2867. WG.Send("eq " + data.id);
  2868. await WG.sleep(2000);
  2869. WG.go("扬州城-矿山");
  2870. WG.Send("wa");
  2871. WG.zdwk("remove", false);
  2872. return;
  2873. }
  2874. } else if (data.items) {
  2875. if (data.eqs[0] && data.eqs[0].name.indexOf("铁镐") > -1) {
  2876.  
  2877. await WG.sleep(1000);
  2878. WG.go("扬州城-矿山");
  2879. await WG.sleep(1000);
  2880. WG.Send("wa");
  2881. WG.zdwk("remove", false);
  2882. return;
  2883. } else {
  2884. for (let i = 0; i < data.items.length; i++) {
  2885. let item = data.items[i];
  2886. if (item.name.indexOf("铁镐") > -1) {
  2887. tiegao_id = item.id;
  2888. break;
  2889. }
  2890. }
  2891. if (tiegao_id) {
  2892. WG.Send("eq " + tiegao_id);
  2893. await WG.sleep(2000);
  2894. WG.go("扬州城-矿山");
  2895. WG.Send("wa");
  2896. WG.zdwk("remove", false);
  2897. return;
  2898. } else {
  2899. WG.go("扬州城-打铁铺");
  2900. WG.Send("look 1");
  2901. }
  2902. }
  2903. }
  2904. }
  2905. if (data.type == 'text' && data.msg == '你要看什么?') {
  2906. let id = WG.getIdByName('铁匠');
  2907. if (id) {
  2908. tiejiang_id = id;
  2909. WG.Send('list ' + id);
  2910. } else {
  2911. messageAppend("<hio>自动挖矿</hio>未发现铁匠");
  2912. WG.zdwk("remove", false);
  2913. }
  2914. } else if (data.type == 'text') {
  2915. if (data.msg == '你挥着铁镐开始认真挖矿。') WG.zdwk("remove");
  2916. else if ((data.msg == "你现在正忙。" || data.msg == "你正在战斗,待会再说。" || data.msg.indexOf("不要急") >= 0 || data.msg.indexOf("这个方向没有出路") >= 0) && wk_busy == false) {
  2917. wk_busy = true;
  2918. messageAppend('卡顿,五秒后再次尝试操作', 0, 1);
  2919. setTimeout(() => {
  2920. wk_busy = false;
  2921. WG.zdwk("remove", false);
  2922. WG.zdwk();
  2923. }, 5000);
  2924. }
  2925. }
  2926. if (data.type == 'dialog' && data.dialog == 'list' && data.seller == tiejiang_id) {
  2927. let item_id;
  2928. for (let i = 0; i < data.selllist.length; i++) {
  2929. let item = data.selllist[i];
  2930. if (item.name == "<wht>铁镐</wht>") {
  2931. item_id = item.id;
  2932. break;
  2933. }
  2934. }
  2935. if (item_id) {
  2936. WG.Send('buy 1 ' + item_id + ' from ' + tiejiang_id);
  2937.  
  2938. await WG.sleep(2000);
  2939. } else {
  2940. messageAppend("<hio>自动挖矿</hio>无法购买<wht>铁镐</wht>");
  2941. WG.zdwk("remove", false);
  2942. }
  2943. }
  2944. });
  2945. WG.Send("stopstate;pack");
  2946.  
  2947. } else {
  2948. var t = $(".room_items .room-item:first .item-name").text();
  2949. t = t.indexOf("<挖矿");
  2950.  
  2951. if (t == -1) {
  2952. messageAppend("当前不在挖矿状态");
  2953. if (timer == 0) {
  2954. console.log(timer);
  2955. WG.go("扬州城-矿山");
  2956. WG.eq("铁镐");
  2957. WG.Send("wa");
  2958. timer = setInterval(WG.zdwk, 5000);
  2959. }
  2960. } else {
  2961. WG.timer_close();
  2962. }
  2963.  
  2964. if (WG.at("扬州城-矿山") && t == -1) {
  2965. //不能挖矿,自动买铁镐
  2966. WG.go("扬州城-打铁铺");
  2967. WG.buy(pgoods["铁镐"]);
  2968. //买完等待下一次检查
  2969. messageAppend("自动买铁镐");
  2970. return;
  2971. }
  2972. if (WG.at("扬州城-打铁铺")) {
  2973. var lists = $(".dialog-list > .obj-list:eq(1)");
  2974. var id;
  2975. var name;
  2976. if (lists.length) {
  2977. messageAppend("查找铁镐ID");
  2978. for (var a of lists.children()) {
  2979. a = $(a);
  2980. id = a.attr("obj");
  2981. name = $(a.children()[0]).html();
  2982. if (name == "铁镐") {
  2983. equip["铁镐"] = id;
  2984. WG.eq("铁镐");
  2985. break;
  2986. }
  2987. }
  2988. GM_setValue(roleid + "_equip", equip);
  2989. WG.go("扬州城-矿山");
  2990. WG.Send("wa");
  2991. }
  2992. return;
  2993. }
  2994. }
  2995. },
  2996. timer_close: function () {
  2997. if (timer) {
  2998. clearInterval(timer);
  2999. timer = 0;
  3000. }
  3001. },
  3002. wudao_hook: undefined,
  3003. wudao_auto: function () {
  3004. //创建定时器
  3005. if (timer == 0) {
  3006. timer = setInterval(WG.wudao_auto, 1000);
  3007. }
  3008. if (!WG.at("武道塔")) {
  3009. //进入武道塔 对于武神塔不知道咋操作
  3010. if (CanUse) {
  3011. if (!WG.wudao_hook) {
  3012. WG.wudao_hook = WG.add_hook("dialog", (data) => {
  3013. var item = data.items
  3014. for (var ii of item) {
  3015. if (ii.id == "signin") {
  3016. WG.go("武道塔");
  3017. //var pattern = "/-?[1-9]\d*/-?[1-9]\d*/", str = ii.desc;//写不来正则
  3018. var reg = new RegExp("进度([^%]+),<");
  3019. var wudaojindu = (ii.desc.match(reg))[1];
  3020. if (wudaojindu != null) {
  3021. messageAppend("爬塔 : " + wudaojindu);
  3022. var index = wudaojindu.indexOf('<');
  3023. var wudao = wudaojindu.substring(0, index).split('/')
  3024. var wudaocongz = ii.desc.indexOf("武道塔可以重置") != -1;
  3025. // messageAppend("测试结果 : "+wudaocongz+"__" + wudao [0]+ "__" + wudao [1] );
  3026. if (wudao[0] == wudao[1]) {
  3027. messageAppend("爬塔完成! ");
  3028. if (wudaocongz) { //重置
  3029. WG.ask("守门人", 1);
  3030. messageAppend("爬塔重置完成! ");
  3031. WG.Send("go enter");
  3032. } else {
  3033. messageAppend("爬塔已经重置过了!");
  3034. WG.timer_close();
  3035. }
  3036. } else { //没爬完
  3037. messageAppend("爬塔未完成!");
  3038. WG.Send("go enter");
  3039. }
  3040. //messageAppend(" ii "+ wudaojindu +" ____" + wudaocongz);
  3041. } else {
  3042. messageAppend("获取爬塔信息失败 : " + ii.desc);
  3043. }
  3044. break;
  3045. }
  3046. }
  3047. WG.remove_hook(WG.wudao_hook);
  3048. WG.wudao_hook = undefined;
  3049. })
  3050. }
  3051. WG.Send("tasks");
  3052. } else {
  3053. WG.go("武道塔");
  3054. WG.ask("守门人", 1);
  3055. WG.Send("go enter");
  3056. }
  3057. } else {
  3058. //武道塔内处理
  3059. //messageAppend("武道塔");
  3060. var w = $(".room_items .room-item:last");
  3061. var t = w.text();
  3062. if (t.indexOf("守护者") != -1) {
  3063. WG.Send("kill " + w.attr("itemid"));
  3064. WG.wudao_autopfm();
  3065. } else {
  3066. WG.Send("go up");
  3067. }
  3068. }
  3069. },
  3070. wudao_autopfm: function () {
  3071. var pfm = wudao_pfm.split(',');
  3072. for (var p of pfm) {
  3073. if ($("div.combat-panel div.combat-commands span.pfm-item:eq(" + p + ") span").css("left") == "0px")
  3074. $("div.combat-panel div.combat-commands span.pfm-item:eq(" + p + ") ").click();
  3075. }
  3076. },
  3077. xue_auto: function () {
  3078. var t = $(".room_items .room-item:first .item-name").text();
  3079. t = t.indexOf("<打坐") != -1 || t.indexOf("<学习") != -1 || t.indexOf("<练习") != -1;
  3080. //创建定时器
  3081. if (timer == 0) {
  3082. if (t == false) {
  3083. messageAppend("当前不在打坐或学技能");
  3084. return;
  3085. }
  3086. timer = setInterval(WG.xue_auto, 1000);
  3087. }
  3088. if (t == false) {
  3089. //学习状态中止,自动去挖矿
  3090. WG.timer_close();
  3091. WG.zdwk();
  3092. } else {
  3093. messageAppend("自动打坐学技能");
  3094. }
  3095. },
  3096. fbnum: 0,
  3097. needGrove: 0,
  3098. oncegrove: function () {
  3099. this.fbnum += 1;
  3100. messageAppend("第" + this.fbnum + "次");
  3101. WG.Send("cr yz/lw/shangu;cr over");
  3102. if (this.needGrove <= this.fbnum) {
  3103. WG.Send("taskover signin");
  3104. messageAppend("<hiy>" + this.fbnum + "次副本小树林秒进秒退已完成</hiy>");
  3105. WG.remove_hook(WG.daily_hook);
  3106. WG.daily_hook = undefined;
  3107. this.timer_close();
  3108. //WG.zdwk();
  3109. this.needGrove = 0;
  3110. this.fbnum = 0;
  3111. }
  3112. },
  3113. grove_ask_info: function () {
  3114. return prompt("请输入需要秒进秒退的副本次数", "");
  3115. },
  3116. grove_auto: function (needG = null) {
  3117. if (timer == 0) {
  3118. if (needG == null) {
  3119. this.needGrove = this.grove_ask_info();
  3120. } else {
  3121. this.needGrove = needG;
  3122. }
  3123. if (this.needGrove) //如果返回的有内容
  3124. {
  3125. if (parseFloat(this.needGrove).toString() == "NaN") {
  3126. messageAppend("请输入数字");
  3127. return;
  3128. }
  3129. messageAppend("开始秒进秒退小树林" + this.needGrove + "次");
  3130.  
  3131. timer = setInterval(() => {
  3132. this.oncegrove()
  3133. }, 1000);
  3134. }
  3135. }
  3136. },
  3137. showhideborad: function () {
  3138. if ($('.WG_log').css('display') == 'none') {
  3139. window.localStorage.setItem("closeBorad", "false")
  3140. $('.WG_log').show();
  3141. } else {
  3142. window.localStorage.setItem("closeBorad", "true")
  3143. $('.WG_log').hide();
  3144. }
  3145. },
  3146. showhidebtn: function () {
  3147. if ($('.WG_button').css('display') == 'none') {
  3148. window.localStorage.setItem("closeBtn", "false")
  3149. $('.WG_button').show();
  3150. } else {
  3151. window.localStorage.setItem("closeBtn", "true")
  3152. $('.WG_button').hide();
  3153. }
  3154. },
  3155. calc: function () {
  3156. messageClear();
  3157. var html = UI.jsquivue;
  3158. messageAppend(html);
  3159. const jsqset = new Vue({
  3160. el: '.JsqVueUI',
  3161. data: {
  3162. status: 1
  3163. },
  3164. methods: {
  3165. qnjs_btn: function () {
  3166. WG.qnjs();
  3167. },
  3168. lxjs_btn: function () {
  3169. WG.lxjs();
  3170. },
  3171. khjs_btn: function () {
  3172. WG.khjs();
  3173. },
  3174. zcjs_btn: function () {
  3175. WG.zcjs();
  3176. },
  3177. getskilljson: function () {
  3178. WG.getPlayerSkill();
  3179. },
  3180. autoAddLianxi: function () {
  3181. // 询问修炼到多少级
  3182. var level = prompt("请输入修炼到多少级", "1");
  3183. if (level == null) {
  3184. return;
  3185. }
  3186. if (parseFloat(level).toString() == "NaN") {
  3187. messageAppend("请输入数字");
  3188. return;
  3189. }
  3190.  
  3191. WG.selectLowKongfu(level);
  3192. },
  3193. onekeydaily: function () {
  3194. WG.SendCmd("$daily");
  3195. },
  3196. onekeypk: function () {
  3197. WG.auto_fight();
  3198. },
  3199. onekeysansan: function () {
  3200. let mlh = `//~silent
  3201. // 导入三三懒人包流程,方便后续导入操作
  3202. // 自命令类型选 Raidjs流程
  3203. // 四区白三三
  3204. ($f_ss)={"name":"三三懒人包","source":"https://cdn.jsdelivr.net/gh/mapleobserver/wsmud-script/三三懒人包.flow.txt","finder":"根文件夹"}
  3205. @js var time=Date.parse(new Date());var f=(f_ss);var n=f["name"];var s=f["source"];var fd=f["finder"];WorkflowConfig.removeWorkflow({"name":n,"type":"flow","finder":fd});$.get(s,{stamp:time},function(data,status){WorkflowConfig.createWorkflow(n,data,fd);});
  3206. @await 2000
  3207. tm 【三三懒人包】流程已导入,如果曾用早期版本的懒人包导入过流程,请先删除这些流程后再使用。`;
  3208.  
  3209. if (unsafeWindow && unsafeWindow.ToRaid) {
  3210. ToRaid.perform(mlh);
  3211. } else {
  3212. messageAppend("请先安装Raid.js");
  3213. }
  3214. },
  3215. onelddh: function () {
  3216. let mlh = `//
  3217. ($f_ss)={"name":"来点动画","source":"http://ii74.oss-cn-qingdao.aliyuncs.com/gif.txt","finder":"根文件夹"}
  3218. @js var time=Date.parse(new Date());var f=(f_ss);var n=f["name"];var s=f["source"];var fd=f["finder"];WorkflowConfig.removeWorkflow({"name":n,"type":"flow","finder":fd});$.get(s,{stamp:time},function(data,status){WorkflowConfig.createWorkflow(n,data,fd);});
  3219. @awiat 2000
  3220. tm 来点动画已导入`;
  3221.  
  3222. if (unsafeWindow && unsafeWindow.ToRaid) {
  3223. ToRaid.perform(mlh);
  3224. } else {
  3225. messageAppend("请先安装Raid.js");
  3226. }
  3227. },
  3228. onekeystore: function () {
  3229. WG.SendCmd("$store")
  3230. },
  3231. onekeysell: function () {
  3232. WG.SendCmd("$drop")
  3233. },
  3234. onekeyfenjie: function () {
  3235. WG.SendCmd("$fenjie")
  3236. },
  3237. updatestore: function () {
  3238. WG.update_store();
  3239. },
  3240. cleandps: function () {
  3241. WG.clean_dps();
  3242. },
  3243. sortstore: function () {
  3244. WG.sort_all();
  3245. },
  3246. sortbag: function () {
  3247. WG.sort_all_bag();
  3248. },
  3249. dsrw: function () {
  3250. WG.dsj();
  3251. },
  3252. zdybtnset: function () {
  3253. WG.zdy_btnset();
  3254. },
  3255. cleankksboss: function () {
  3256. GM_setValue(roleid + "_autoKsBoss", null);
  3257. GM_setValue(roleid + "_automarry", null);
  3258. L.msg("操作成功");
  3259. },
  3260. onekeydelaytest: function () {
  3261. WG.wsdelaytest();
  3262. },
  3263. yuanshen: function () {
  3264. //增加询问确实是否离开
  3265. layer.confirm('将要退出,确定吗?', function(index){
  3266. // do something
  3267. // …
  3268. window.location.href = 'https://ys.mihoyo.com/cloud/?utm_source=default#/'
  3269. layer.close(index);
  3270. });
  3271. },
  3272. onekeyyaota: function () {
  3273. T.goyt();
  3274. }
  3275. }
  3276. })
  3277.  
  3278. },
  3279. dsj_hook: undefined,
  3280. dsj_func: function () {
  3281. if (WG.dsj_hook) {
  3282. WG.remove_hook(WG.dsj_hook);
  3283. }
  3284. messageAppend("已注入定时任务", 0, 1);
  3285. timequestion = GM_getValue(roleid + "_timequestion", timequestion);
  3286. WG.dsj_hook = WG.add_hook("time", (data) => {
  3287. if (data.type == 'time') {
  3288. let i = 0;
  3289. for (let p of timequestion) {
  3290. if ((p.h == data.h && p.m == data.m && p.s == data.s) ||
  3291. (p.h == "" && p.m == data.m && p.s == data.s) ||
  3292. (p.h == "" && p.m == "" && p.s == data.s)) {
  3293. messageAppend("已触发计划" + p.name, 1, 0);
  3294. WG.SendCmd(p.send);
  3295. if (p.type == 1) {
  3296. messageAppend("一次性任务,已移除" + p.name, 1, 0);
  3297. timequestion.baoremove(i);
  3298. GM_setValue(roleid + "_timequestion", timequestion);
  3299. }
  3300. }
  3301. i = i + 1;
  3302. }
  3303. }
  3304. })
  3305. },
  3306. dsj: function () {
  3307. WG.dsj_func();
  3308. messageClear();
  3309. var html = UI.timeoutui;
  3310. messageAppend(html);
  3311. $(".startQuest").off('click');
  3312. $(".removeQuest").off('click');
  3313. //[{"name":"","type":"0","send":"","h":"","s":"","m":""}]
  3314. timequestion = GM_getValue(roleid + "_timequestion", timequestion);
  3315. for (let q of timequestion) {
  3316. let phtml = `<span class='addrun${q.name}'>编辑${q.name}</span>
  3317. <span class='stoprun${q.name}'>删除${q.name}</span>
  3318. <br/>
  3319. `
  3320. $('.questlist').append(phtml);
  3321. $("." + `addrun${q.name}`).on("click", () => {
  3322. $("#questname").val(q.name);
  3323. $("#rtype").val(q.type);
  3324. $("#ht").val(q.h);
  3325. $("#mt").val(q.m);
  3326. $("#st").val(q.s);
  3327. $("#zml_info").val(q.send);
  3328. });
  3329. $("." + `stoprun${q.name}`).on("click", () => {
  3330. let questname = q.name;
  3331. let i = 0
  3332. for (let p of timequestion) {
  3333. if (p.name == questname) {
  3334. timequestion.baoremove(i);
  3335. }
  3336. i = i + 1;
  3337. }
  3338. GM_setValue(roleid + "_timequestion", timequestion);
  3339. WG.dsj();
  3340. });
  3341. }
  3342. $(".startQuest").on("click", () => {
  3343. let questname = $("#questname").val();
  3344. let type = $("#rtype").val();
  3345. let h = $("#ht").val();
  3346. let m = $("#mt").val();
  3347. let s = $("#st").val();
  3348. let send = $("#zml_info").val();
  3349. questname = questname.replaceAll(" ", "_");
  3350. let item = {
  3351. "name": questname,
  3352. "type": type,
  3353. "send": send,
  3354. "h": h,
  3355. "m": m,
  3356. "s": s
  3357. };
  3358. let i = 0;
  3359. for (let p of timequestion) {
  3360. if (questname == p.name) {
  3361. timequestion[i] = item;
  3362. GM_setValue(roleid + "_timequestion", timequestion);
  3363. WG.dsj();
  3364. return;
  3365. }
  3366. i = i + 1;
  3367. }
  3368.  
  3369. timequestion.push(item);
  3370. GM_setValue(roleid + "_timequestion", timequestion);
  3371. WG.dsj();
  3372. });
  3373. $(".removeQuest").on("click", () => {
  3374. let questname = $("#questname").val();
  3375. let i = 0
  3376. for (let p of timequestion) {
  3377. if (p.name == questname) {
  3378. timequestion.baoremove(i);
  3379. return;
  3380. }
  3381. i = i + 1;
  3382. }
  3383. GM_setValue(roleid + "_timequestion", timequestion);
  3384. WG.dsj();
  3385. });
  3386.  
  3387.  
  3388. },
  3389. qnjs: function () {
  3390. messageClear();
  3391. var html = UI.qnjsui;
  3392. messageAppend(html);
  3393. const qnvue = new Vue({
  3394. el: ".QianNengCalc",
  3395. data: {
  3396. qnsx: {
  3397. m: 0,
  3398. c: 0,
  3399. color: 0
  3400. }
  3401. },
  3402. methods: {
  3403. qnjscalc: function () {
  3404. $.each(this.qnsx, (key, value) => {
  3405. this.qnsx[key] = Number(value);
  3406. })
  3407. messageAppend("需要潜能:" + WG.dian(this.qnsx.c, this.qnsx.m, this.qnsx.color));
  3408. }
  3409. }
  3410. })
  3411.  
  3412. },
  3413. lxjs: function () {
  3414. messageClear();
  3415. var html = UI.lxjsui;
  3416. messageAppend(html);
  3417. const lxjsvue = new Vue({
  3418. el: ".StudyTimeCalc",
  3419. data: {
  3420. jsqsx: {
  3421. xtwx: 0,
  3422. htwx: 0,
  3423. lxxl: 0,
  3424. clevel: 0,
  3425. mlevel: 0,
  3426. color: 0
  3427. }
  3428. },
  3429. created() {
  3430. this.jsqsx.xtwx = G.score.int;
  3431. this.jsqsx.htwx = G.score.int_add;
  3432. this.jsqsx.lxxl = parseInt(G.score2.lianxi_per.replaceAll("%", ""));
  3433. },
  3434. methods: {
  3435. lxjscalc: function () {
  3436. $.each(this.jsqsx, (key, value) => {
  3437. this.jsqsx[key] = Number(value);
  3438. })
  3439. const lxObj = WG.lx(this.jsqsx.xtwx, this.jsqsx.htwx, this.jsqsx.lxxl,
  3440. this.jsqsx.clevel, this.jsqsx.mlevel, this.jsqsx.color);
  3441. messageAppend("需要潜能:" + lxObj.qianneng + " 所需时间:" + lxObj.time);
  3442. }
  3443. }
  3444. })
  3445. },
  3446. khjs: function () {
  3447. messageClear();
  3448. var html = UI.khjsui;
  3449. messageAppend(html);
  3450. const khvue = new Vue({
  3451. el: ".KaihuaCalc",
  3452. data: {
  3453. khsx: {
  3454. nl: 0,
  3455. xg: 0,
  3456. hg: 0
  3457. }
  3458. },
  3459. created() {
  3460. this.khsx.nl = G.score.max_mp;
  3461. this.khsx.xg = G.score.con;
  3462. this.khsx.hg = G.score.con_add;
  3463. },
  3464. methods: {
  3465. khjscalc: function () {
  3466. $.each(this.khsx, (key, value) => {
  3467. this.khsx[key] = Number(value);
  3468. })
  3469. messageAppend("你的分值:" + WG.gen(this.khsx.nl, this.khsx.xg, this.khsx.hg));
  3470. }
  3471. }
  3472. })
  3473. }, zcjs: function () {
  3474. messageClear();
  3475. var html = UI.zcjsui;
  3476. messageAppend(html);
  3477. const khvue = new Vue({
  3478. el: ".ZiChuangCalc",
  3479. data: {
  3480. zcsx: {
  3481. level: 0,
  3482. percentage: 0
  3483. }
  3484. },
  3485. methods: {
  3486. zcjscalc: function () {
  3487. messageAppend("自创" + this.zcsx.level + "级,词条百分比:" + this.zcsx.percentage + " 需要词条等级:" +
  3488. Math.ceil((this.zcsx.percentage - 4 - 2.5e-3 * this.zcsx.level) / this.zcsx.level / 2.5e-5));
  3489. }
  3490. }
  3491. })
  3492. },
  3493. switchReversal: function (e) {
  3494. let p = e.hasClass("on");
  3495. if (!p) {
  3496. return "开";
  3497. }
  3498. return "关";
  3499. },
  3500.  
  3501. auto_preform_switch: function () {
  3502.  
  3503. if (G.auto_preform) {
  3504. G.auto_preform = false;
  3505. messageAppend("<hio>自动施法</hio>关闭");
  3506.  
  3507. WG.auto_preform("stop");
  3508. } else {
  3509. G.auto_preform = true;
  3510. messageAppend("<hio>自动施法</hio>开启");
  3511. WG.auto_preform();
  3512. }
  3513. },
  3514. forcebufskil: '',
  3515. bufskill: {},
  3516. xubuf: null,
  3517. pfmskill: null,
  3518. is_free: function () {
  3519. if (WG.hasStr("faint", G.selfStatus) || WG.hasStr("busy", G.selfStatus) || WG.hasStr("rash", G.selfStatus) || WG.hasStr("bss", G.selfStatus)) {
  3520. return false;
  3521. } else {
  3522. return true;
  3523. }
  3524. },
  3525. is_zero_releasetime: function () {
  3526. return G.score2.releasetime.indexOf('0秒') >= 0;
  3527. },
  3528. auto_preform: function (v) {
  3529. if (v == "stop") {
  3530. G.selfStatus = [];
  3531. WG.xubuf = null;
  3532. WG.pfmskil = null;
  3533. if (G.preform_timer) {
  3534. clearInterval(G.preform_timer);
  3535. G.preform_timer = undefined;
  3536. $(".auto_perform").css("background", "");
  3537. WG.forcebufskil = ''
  3538. WG.bufskill = {}
  3539. }
  3540. return;
  3541. }
  3542. if (G.preform_timer || G.auto_preform == false) return;
  3543. $(".auto_perform").css("background", "#3E0000");
  3544. //出招时重新获取黑名单
  3545. unauto_pfm = GM_getValue(roleid + "_unauto_pfm", unauto_pfm);
  3546. var unpfm = unauto_pfm.split(',');
  3547. for (var pfmname of unpfm) {
  3548. if (!WG.hasStr(pfmname, blackpfm))
  3549. blackpfm.push(pfmname);
  3550. }
  3551. // if (family.indexOf("逍遥") >= 0) {
  3552. // if (!WG.hasStr("force.duo", blackpfm)) {
  3553. // blackpfm.push('force.duo');
  3554. // }
  3555. // }
  3556. if (!WG.hasStr("force.tuoli", blackpfm)) {
  3557. blackpfm.push('force.tuoli');
  3558. }
  3559. // 如果 auto_pfm_mode 等于 true 则使用智能施法
  3560. if (G.auto_pfm_mode) {
  3561. let force_buff_skill = ['force.cui', 'force.power', 'force.xi',
  3562. 'force.xin', 'force.chu', 'force.ztd', 'force.zhen', 'force.busi', 'force.wang'];
  3563. let buff_skill_dict = {
  3564. "weapon": ['sword.wu', 'blade.shi', 'sword.yu'],
  3565. "ztd": ["force.ztd"],
  3566. "mingyu": ["force.wang"],
  3567. "force": ["*"],
  3568. "dodge": ["dodge.power", "dodge.fo", "dodge.gui", "dodge.lingbo", "dodge.zhui"]
  3569. }
  3570. WG.xubuf = null;
  3571. WG.pfmskill = null
  3572. G.preform_timer = setInterval(() => {
  3573. if (G.in_fight == false) { WG.auto_preform("stop"); return; }
  3574. var alreay_pfm = [];
  3575. if (WG.xubuf == null) {
  3576. WG.xubuf = setTimeout(async () => {
  3577. for (var skill of G.skills) {
  3578. if (WG.hasStr(skill.id, blackpfm)) {
  3579. continue;
  3580. }
  3581. for (let buf in buff_skill_dict) {
  3582. for (let ski of buff_skill_dict[buf]) {
  3583. if (ski == skill.id) {
  3584. if (!G.gcd && !G.cds.get(skill.id) && !WG.hasStr(buf, G.selfStatus)) {
  3585. WG.Send("perform " + skill.id);
  3586. // break;
  3587. await WG.sleep(200);
  3588. while (!G.cds.get(skill.id)) {
  3589. if (G.in_fight == false) { WG.auto_preform("stop"); return; }
  3590. if (!WG.is_free()) break;
  3591. WG.Send("perform " + skill.id);
  3592. await WG.sleep(200);
  3593. }
  3594. if (WG.hasStr(buf, G.selfStatus)) {
  3595. console.log('buf技能' + skill.id)
  3596. WG.bufskill[buf] = skill.id;
  3597. }
  3598. // alreay_pfm.push(skill.id)
  3599. }
  3600. // alreay_pfm.push(skill.id)
  3601. break;
  3602. }
  3603. }
  3604. }
  3605. if (WG.hasStr(skill.id, force_buff_skill)) {
  3606. if (!G.gcd && !G.cds.get(skill.id) && !WG.hasStr("force", G.selfStatus)) {
  3607. WG.Send("perform " + skill.id);
  3608. // break;
  3609. await WG.sleep(200);
  3610. while (!G.cds.get(skill.id) && !WG.hasStr("force", G.selfStatus)) {
  3611. if (G.in_fight == false) { WG.auto_preform("stop"); return; }
  3612. if (!WG.is_free()) break;
  3613. WG.Send("perform " + skill.id);
  3614. await WG.sleep(200);
  3615.  
  3616. }
  3617. if (WG.hasStr("force", G.selfStatus)) {
  3618. console.log('内功buf技能' + skill.id)
  3619. WG.forcebufskil = skill.id;
  3620. }
  3621. alreay_pfm.push(skill.id)
  3622. }
  3623. // alreay_pfm.push(skill.id)
  3624. }
  3625. }
  3626. WG.xubuf = null;
  3627. }, 10);
  3628. }
  3629. if (WG.pfmskill == null) {
  3630. WG.pfmskill = setTimeout(async () => {
  3631. for (var skill of G.skills) {
  3632. if (WG.hasStr(skill.id, blackpfm)) {
  3633. continue;
  3634. }
  3635. if (G.gcd) break;
  3636. // console.log(skill);
  3637. if (!G.gcd && !G.cds.get(skill.id) && !(WG.hasStr(skill.id, force_buff_skill) || WG.hasStr(skill.id, buff_skill_dict))) {
  3638. WG.Send("perform " + skill.id);
  3639. if (WG.is_zero_releasetime()) break; // 非0出招者只放一个技能
  3640. await WG.sleep(20);
  3641. if (!WG.is_free()) break;
  3642.  
  3643. }
  3644. if (WG.forcebufskil != '') {
  3645. if (!G.gcd && !G.cds.get(skill.id) && WG.hasStr(skill.id, force_buff_skill) && skill.id != WG.forcebufskil &&
  3646. !WG.hasStr(skill.id, buff_skill_dict['mingyu']) && !WG.hasStr(skill.id, buff_skill_dict['ztd'])) {
  3647. console.log('使用无buf的内功技能' + skill.id)
  3648. WG.Send("perform " + skill.id);
  3649. if (!WG.is_free()) break;
  3650. }
  3651. }
  3652. // if (WG.bufskill.hasOwnProperty('weapon') && WG.bufskill['weapon'] != '') {
  3653. // if (!G.gcd && !G.cds.get(skill.id) && WG.hasStr(skill.id, buff_skill_dict) && skill.id != WG.bufskill['weapon'] &&
  3654. // !WG.hasStr(skill.id, buff_skill_dict['mingyu']) && !WG.hasStr(skill.id, buff_skill_dict['ztd'])) {
  3655. // console.log('使用无buf的武器技能' + skill.id)
  3656. // WG.Send("perform " + skill.id);
  3657. // if (!WG.is_free()) break;
  3658. // }
  3659. // }
  3660. }
  3661.  
  3662. WG.pfmskill = null
  3663. }, 10);
  3664. }
  3665. }, 300);
  3666. }
  3667. else {
  3668. G.preform_timer = setInterval(() => {
  3669.  
  3670. if (G.in_fight == false) WG.auto_preform("stop");
  3671. for (var skill of G.skills) {
  3672.  
  3673. if (WG.inArray(skill.id, blackpfm)) {
  3674. continue;
  3675. }
  3676. if (!G.gcd && !G.cds.get(skill.id)) {
  3677. WG.Send("perform " + skill.id);
  3678. break;
  3679. }
  3680. }
  3681. }, 350);
  3682. }
  3683. },
  3684.  
  3685. formatCurrencyTenThou: function (num) {
  3686. num = num.toString().replace(/\$|\,/g, '');
  3687. if (isNaN(num)) num = "0";
  3688. var sign = (num == (num = Math.abs(num)));
  3689. num = Math.floor(num * 10 + 0.50000000001); //cents = num%10;
  3690. num = Math.floor(num / 10).toString();
  3691. for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) {
  3692. num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3));
  3693. }
  3694. return (((sign) ? '' : '-') + num);
  3695. },
  3696. gen: function (nl, xg, hg) {
  3697. var jg = nl / 100 + xg * hg / 10;
  3698. var sd = this.formatCurrencyTenThou(jg);
  3699. return sd;
  3700. },
  3701. dian: function (c, m, se) {
  3702. var j = c + m;
  3703. var jj = m - c;
  3704. var jjc = jj / 2;
  3705. var z = j * jjc * se * 5;
  3706. var sd = this.formatCurrencyTenThou(z);
  3707. return sd;
  3708. },
  3709. lx: function (xtwx, htwx, lxxl, dqdj, mbdj, k) {
  3710. var qianneng = (mbdj * mbdj - dqdj * dqdj) * 2.5 * k;
  3711. var time = qianneng / (xtwx + htwx) / (1 + lxxl / 100 - xtwx / 100) / 12;
  3712. var timeString = time < 60 ? `${parseInt(time)}分钟` : `${parseInt(time / 60)}小时${parseInt(time % 60)}分钟`;
  3713. return { qianneng: qianneng, time: timeString };
  3714. },
  3715. //找boss,boss不在,-1,
  3716. findboss: function (data, bossname, callback) {
  3717. for (let i = 0; i < data.items.length; i++) {
  3718. if (data.items[i] != 0) {
  3719. if (data.items[i].name.indexOf(bossname) >= 0) {
  3720. callback(data.items[i].id);
  3721. }
  3722. }
  3723. }
  3724. callback(-1);
  3725. },
  3726. ksboss: undefined,
  3727. kksBoss: function (data) {
  3728. var boss_place = data.content.match("出现在([^%]+)一带。")[1];
  3729. var boss_name = data.content.match("听说([^%]+)出现在")[1];
  3730. if (boss_name == null || boss_place == null) {
  3731. return;
  3732. }
  3733. blacklist = GM_getValue(roleid + "_blacklist", blacklist);
  3734. blacklist = blacklist instanceof Array ? blacklist : blacklist.split(",");
  3735. if (WG.inArray(boss_name.replace("/<(.*?)>/g", ""), blacklist)) {
  3736. messageAppend("黑名单boss,忽略!");
  3737. return;
  3738. }
  3739. autoKsBoss = GM_getValue(roleid + "_autoKsBoss", autoKsBoss);
  3740. ks_pfm = GM_getValue(roleid + "_ks_pfm", ks_pfm);
  3741. ks_wait = GM_getValue(roleid + "_ks_wait", ks_wait);
  3742. autoeq = GM_getValue(roleid + "_auto_eq", autoeq);
  3743. console.log("boss");
  3744. console.log(boss_place);
  3745. var c = "<div class=\"item-commands\"><span id = 'closeauto'>关闭自动执行后命令</span></div>";
  3746. messageAppend("自动前往BOSS地点 " + c);
  3747. $('#closeauto').off('click');
  3748. $('#closeauto').on('click', () => {
  3749. if (timer != 0) {
  3750. WG.timer_close();
  3751. messageAppend("已停止后命令");
  3752. } else {
  3753. messageAppend("已经停止");
  3754. }
  3755. });
  3756.  
  3757. WG.Send("stopstate");
  3758. WG.go(boss_place);
  3759. WG.ksboss = WG.add_hook(["items", "itemadd", "die", "room"], function (data) {
  3760. if (data.type == "items") {
  3761. if (!WG.at(boss_place)) {
  3762. return;
  3763. }
  3764. WG.findboss(data, boss_name, function (bid) {
  3765. if (bid != -1) {
  3766. next = 999;
  3767. if (autoeq != "") {
  3768. WG.eqhelper(autoeq);
  3769. }
  3770. setTimeout(() => {
  3771. WG.Send("kill " + bid);
  3772. //WG.Send("select " + bid);
  3773. next = 0;
  3774. }, Number(ks_pfm));
  3775. } else {
  3776. if (next == 999) {
  3777. console.log('found');
  3778. return;
  3779. }
  3780. let lj = needfind[boss_place];
  3781. if (needfind[boss_place] != undefined && next < lj.length) {
  3782. setTimeout(() => {
  3783. console.log(lj[next]);
  3784. WG.Send(lj[next]);
  3785. next++;
  3786. }, 1000);
  3787. } else {
  3788. console.log("not found");
  3789. }
  3790. }
  3791. });
  3792. }
  3793. if (data.type == "itemadd") {
  3794. if (data.name.indexOf(boss_name) >= 0) {
  3795. next = 0;
  3796. WG.Send("get all from " + data.id);
  3797. WG.remove_hook(this.index);
  3798. }
  3799. }
  3800. if (data.type == "die") {
  3801. next = 0;
  3802. WG.Send('relive');
  3803. WG.remove_hook(this.index);
  3804. }
  3805. if (data.type == 'room') {
  3806. if (next == 999) {
  3807. next = 0;
  3808. }
  3809. }
  3810. });
  3811. timer = setTimeout(() => {
  3812. console.log("复活挖矿");
  3813. WG.Send('relive');
  3814. WG.remove_hook(this.ksboss);
  3815. auto_command = GM_getValue(roleid + "_auto_command", auto_command);
  3816. if (auto_command && auto_command != null && auto_command != "" && auto_command != "null") {
  3817. WG.SendCmd(auto_command);
  3818. } else {
  3819. WG.zdwk();
  3820. }
  3821. next = 0;
  3822. WG.timer_close();
  3823. }, 1000 * ks_wait);
  3824.  
  3825. },
  3826. marryhy: undefined,
  3827. xiyan: async function () {
  3828.  
  3829. var c = "<div class=\"item-commands\"><span id = 'closeauto'>关闭自动执行后命令</span></div>";
  3830. messageAppend("自动喜宴 " + c);
  3831. $('#closeauto').off('click');
  3832. $('#closeauto').on('click', () => {
  3833. if (timer != 0) {
  3834. WG.timer_close();
  3835. messageAppend("已停止后命令");
  3836. } else {
  3837. messageAppend("已经停止");
  3838. }
  3839. });
  3840. WG.Send("stopstate");
  3841. WG.go("扬州城-喜宴");
  3842. WG.marryhy = WG.add_hook(['items', 'cmds', 'text', 'msg'], function (data) {
  3843. if (data.type == 'items') {
  3844. for (let idx = 0; idx < data.items.length; idx++) {
  3845. if (data.items[idx] != 0) {
  3846. if (data.items[idx].name.indexOf(">婚宴礼桌<") >= 0) {
  3847. console.log("拾取");
  3848. WG.Send('get all from ' + data.items[idx].id);
  3849. console.log("xy" + WG.marryhy);
  3850. WG.remove_hook(WG.marryhy);
  3851. break;
  3852. }
  3853. }
  3854. }
  3855. } else if (data.type == 'text') {
  3856. if (data.msg == "你要给谁东西?") {
  3857. console.log("没人");
  3858. }
  3859. if (/^店小二拦住你说道:怎么又是你,每次都跑这么快,等下再进去。$/.test(data.msg)) {
  3860. console.log("cd");
  3861. messageAppend("<hiy>你太勤快了, 1秒后回去挖矿</hiy>")
  3862. }
  3863. if (/^店小二拦住你说道:这位(.+),不好意思,婚宴宾客已经太多了。$/.test(data.msg)) {
  3864. console.log("客满");
  3865. messageAppend("<hiy>你来太晚了, 1秒后回去挖矿</hiy>")
  3866.  
  3867. }
  3868. } else if (data.type == 'cmds') {
  3869. for (let idx = 0; idx < data.items.length; idx++) {
  3870. if (data.items[idx].name == '1金贺礼') {
  3871. WG.SendCmd(data.items[idx].cmd + ';go up;$wait 2000;go down;go up');
  3872. console.log("交钱");
  3873. break;
  3874. }
  3875. }
  3876. }
  3877. });
  3878. timer = setTimeout(() => {
  3879. console.log("挖矿");
  3880. WG.remove_hook(this.marryhy);
  3881. if (auto_command && auto_command != null && auto_command != "" && auto_command != "null") {
  3882. WG.SendCmd(auto_command);
  3883. } else {
  3884. WG.zdwk();
  3885. }
  3886. next = 0;
  3887. WG.timer_close();
  3888. }, 30000);
  3889. },
  3890.  
  3891. saveRoomstate(data) {
  3892. roomData = data.items;
  3893. },
  3894. haspack: function (name, callback) {
  3895. WG.Send('pack');
  3896. for (let item of packData) {
  3897. if (item.name.indexOf(name) >= 0) {
  3898. callback(item.id);
  3899. return;
  3900. }
  3901. }
  3902. callback('');
  3903. },
  3904. eqx: null,
  3905. eqxp: null,
  3906. eqhelper(type, enaskill = 0, realy = false) {
  3907. var deepCopy = function (source) {
  3908. var result = {};
  3909. for (var key in source) {
  3910. result[key] = typeof source[key] === 'object' ? deepCopy(source[key]) : source[key];
  3911. }
  3912. return result;
  3913. }
  3914. if (type == undefined || type == 0 || type > eqlist.length) {
  3915. return;
  3916. }
  3917.  
  3918. if (eqlist == null || eqlist[type] == null || eqlist[type] == "") {
  3919. if (enaskill == 1) {
  3920. return;
  3921. }
  3922. messageAppend("套装未保存,保存当前装备作为套装" + type + "!", 1);
  3923. WG.eqx = WG.add_hook("dialog", (data) => {
  3924. if (data.dialog == "pack" && data.eqs != undefined) {
  3925. eqlist[type] = deepCopy(data.eqs);
  3926. GM_setValue(roleid + "_eqlist", eqlist);
  3927. messageAppend("套装" + type + "保存成功!", 1);
  3928. WG.remove_hook(WG.eqx);
  3929. WG.eqx = null;
  3930. }
  3931. });
  3932. WG.eqxp = WG.add_hook("dialog", (data) => {
  3933. if (data.dialog == 'skills' && data.items != null) {
  3934. var nowskill = { 'throwing': '', 'unarmed': '', 'force': '', 'dodge': '', 'sword': '', 'blade': '', 'club': '', 'staff': '', 'whip': '', 'parry': '' };
  3935. for (let item of data.items) {
  3936. if (nowskill[item.id] != null) {
  3937. if (item.enable_skill == null) {
  3938. nowskill[item.id] = 'none';
  3939. } else {
  3940. nowskill[item.id] = item.enable_skill;
  3941. }
  3942. }
  3943. }
  3944. skilllist[type] = nowskill;
  3945. GM_setValue(roleid + "_skilllist", skilllist);
  3946. messageAppend("技能" + type + "保存成功!", 1);
  3947. WG.remove_hook(WG.eqxp);
  3948. WG.eqxp = null;
  3949. }
  3950. });
  3951. WG.Send("cha");
  3952. WG.Send("pack");
  3953. } else {
  3954. if (WG.eqx != null || WG.eqxp != null) {
  3955. WG.remove_hook(WG.eqx);
  3956. WG.remove_hook(WG.eqxp);
  3957. WG.eqx = null;
  3958. WG.eqxp = null;
  3959. }
  3960. eqlist = GM_getValue(roleid + "_eqlist", eqlist);
  3961. skilllist = GM_getValue(roleid + "_skilllist", skilllist);
  3962. if (realy) {
  3963. var eqdata = ""
  3964. if (enaskill == 0) {
  3965. //从eqlist第一项开始遍历
  3966. for (let i = 1; i < 11; i++) {
  3967. if (eqlist[type][i] != null && eqlist[type][i] != "") {
  3968. eqdata += "eq " + eqlist[type][i].id + ";";
  3969. }
  3970. }
  3971. // 将eqlist第一项的id添加到eqdata
  3972. eqdata += "eq " + eqlist[type][0].id + ";";
  3973.  
  3974. } else {
  3975. //使用for in遍历skilllist 获取其中的id
  3976. for (let i in skilllist[type]) {
  3977. if (skilllist[type][i] != null && skilllist[type][i] != "") {
  3978. eqdata += "enable " + i + " " + skilllist[type][i] + ";";
  3979. }
  3980. }
  3981. }
  3982. copyToClipboard(eqdata);
  3983. messageAppend(type + "已复制到剪贴板!", 1);
  3984. return
  3985. }
  3986.  
  3987. var p_cmds = "";
  3988. // console.log(G.enable_skills)
  3989. let mySkills = [];
  3990. let myEqs = "";
  3991.  
  3992. for (let ski of G.eqs) {
  3993. if (ski) {
  3994. myEqs = myEqs + ski.id;
  3995. }
  3996. }
  3997. let tsMsg = "套装"
  3998. if (enaskill === 0) {
  3999. for (let i = 1; i < 11; i++) {
  4000. if (eqlist[type][i] != null && myEqs.indexOf(eqlist[type][i].id) < 0) {
  4001. p_cmds += ("$wait 20;eq " + eqlist[type][i].id + ";");
  4002. }
  4003. }
  4004. if (eqlist[type][0] != null && myEqs.indexOf(eqlist[type][0].id) < 0) {
  4005. p_cmds += ("$wait 40;eq " + eqlist[type][0].id + ";");
  4006. }
  4007. }
  4008. if (enaskill === 1) {
  4009. for (var key in skilllist[type]) {
  4010. for (let ski of G.enable_skills) {
  4011. if (ski.name != skilllist[type][key] && ski.type == key) {
  4012. p_cmds += (`$wait 40;enable ${key} ${skilllist[type][key]};`);
  4013. break
  4014. }
  4015. }
  4016. }
  4017. tsMsg = "技能"
  4018. $("span[command=skills]").click();
  4019. }
  4020.  
  4021.  
  4022. p_cmds = p_cmds + '$wait 40;cha;look3 1';
  4023.  
  4024. WG.eqx = WG.add_hook('text', function (data) {
  4025. if (data.type == 'text') {
  4026.  
  4027. if (data.msg.indexOf('没有这个玩家') >= 0) {
  4028. messageAppend(tsMsg + "装备成功" + type + "!", 1);
  4029. if (enaskill == 1) {
  4030. $("span[command=skills]").click();
  4031. }
  4032. WG.remove_hook(WG.eqx);
  4033. }
  4034. }
  4035. });
  4036.  
  4037. WG.SendCmd(p_cmds);
  4038.  
  4039. }
  4040. },
  4041. eqhelperdel: function (type) {
  4042. eqlist = GM_getValue(roleid + "_eqlist", eqlist);
  4043. skilllist = GM_getValue(roleid + "_skilllist", skilllist);
  4044. delete eqlist[type];
  4045. delete skilllist[type];
  4046. GM_setValue(roleid + "_eqlist", eqlist);
  4047. GM_setValue(roleid + "_skilllist", skilllist);
  4048. messageAppend("清除套装 技能" + type + "设置成功!", 1);
  4049. },
  4050. uneqall: function (isskill = "0") {
  4051. if (isskill == "0") {
  4052. this.eqx = WG.add_hook("dialog", (data) => {
  4053. if (data.dialog == "pack" && data.eqs != undefined) {
  4054. for (let i = 0; i < data.eqs.length; i++) {
  4055. if (data.eqs[i] != null) {
  4056. WG.Send("uneq " + data.eqs[i].id);
  4057. }
  4058. }
  4059. WG.remove_hook(this.eqx);
  4060. }
  4061. });
  4062. WG.Send("pack");
  4063. messageAppend("取消所有装备成功!", 1);
  4064. } else {
  4065. const enaNone = "enable unarmed none;enable blade none;enable force none;enable parry none;enable dodge none;enable sword none;enable throwing none;enable whip none;enable club none;enable staff none";
  4066. const enalist = enaNone.split(";");
  4067. for (let i = 0; i < enalist.length; i++) {
  4068. WG.sleep(10);
  4069. WG.Send(enalist[i]);
  4070. }
  4071.  
  4072. messageAppend("取消所有技能成功!", 1);
  4073. }
  4074.  
  4075. },
  4076. eqloader: function () {
  4077. let tmp_eqlist = GM_getValue(roleid + "_eqlist", null);
  4078.  
  4079. var subItems = {
  4080.  
  4081. };
  4082. for (let item in tmp_eqlist) {
  4083. subItems[item] = { name: "装备" + item, icon: "fa-compress", callback: function () { WG.eqhelper(item, 0) } }
  4084. subItems[item + "sk"] = { name: "技能" + item, icon: "fa-magic", callback: function () { WG.eqhelper(item, 1) } }
  4085. subItems[item + "del"] = { name: "删除组" + item, icon: "fa-remove", callback: function () { WG.eqhelperdel(item) } }
  4086. }
  4087. subItems['setting'] = { name: "套装管理", icon: "edit", callback: function () { WG.eqhelperui() } }
  4088. var dfd = jQuery.Deferred();
  4089. setTimeout(function () {
  4090. dfd.resolve(subItems);
  4091. }, 20);
  4092. //setTimeout(function () {
  4093. // dfd.reject(errorItems);
  4094. //}, 1000);
  4095. return dfd.promise();
  4096.  
  4097. },
  4098.  
  4099. eqhelperui: function () {
  4100. messageClear();
  4101. var a = UI.skillsPanel;
  4102. messageAppend(a);
  4103. new Vue({
  4104. el: "#skillsPanelUI",
  4105. data: {
  4106. role: role,
  4107. roleid: roleid,
  4108. eqlist: {},
  4109. cpeqlist: {},
  4110. eqlistdel: {},
  4111. covereqlist: {},
  4112. eqskills_id: "none"
  4113. },
  4114. created() {
  4115.  
  4116. },
  4117. mounted() {
  4118. this.eqlist = GM_getValue(this.roleid + "_eqlist", {});
  4119. },
  4120. methods: {
  4121. eq: function (name) {
  4122. WG.eqhelper(name, 0)
  4123. },
  4124. eqs: function (name) {
  4125. WG.eqhelper(name, 1)
  4126. },
  4127. copyeq: function (name) {
  4128. WG.eqhelper(name, 0, true)
  4129. },
  4130. copyeqs: function (name) {
  4131. WG.eqhelper(name, 1, true)
  4132. },
  4133. save: function (name) {
  4134. WG.eqhelper(name)
  4135. setTimeout(() => {
  4136. this.eqlist = GM_getValue(this.roleid + "_eqlist", {});
  4137. WG.eqhelperui()
  4138. }, 300);
  4139. },
  4140. covereq: function (name) {
  4141. // var that = this;
  4142. this.deleq(name)
  4143. this.save(name)
  4144. },
  4145. deleq: function (name) {
  4146. WG.eqhelperdel(name)
  4147. setTimeout(() => {
  4148. WG.eqhelperui()
  4149. }, 200);
  4150. },
  4151. show: function () {
  4152. WG.eqhelperui()
  4153. },
  4154. saveUI: function () {
  4155. var that = this
  4156. layer.prompt({ title: '请输入套装名...', formType: 2 }, function (text, index) {
  4157. layer.close(index);
  4158. if (text != null) {
  4159. that.save(text)
  4160. }
  4161. });
  4162.  
  4163. },
  4164. eqskills_opts_change: function (eqskills_id) {
  4165. switch (eqskills_id) {
  4166. case "save":
  4167. this.saveUI();
  4168. break;
  4169. case "copyeq":
  4170. this.covereqlist = {}
  4171. this.eqlist = {};
  4172. this.eqlistdel = {};
  4173. this.cpeqlist = GM_getValue(this.roleid + "_eqlist", {});
  4174. this.role = "<< 返回";
  4175. break
  4176. case "delete":
  4177. this.cpeqlist = {}
  4178. this.eqlist = {};
  4179. this.covereqlist = {};
  4180. this.eqlistdel = GM_getValue(this.roleid + "_eqlist", {});
  4181. this.role = "<< 返回";
  4182. break;
  4183. case "covereq":
  4184. this.cpeqlist = {}
  4185. this.eqlist = {};
  4186. this.eqlistdel = {};
  4187. this.covereqlist = GM_getValue(this.roleid + "_eqlist", {});
  4188. this.role = "<< 返回";
  4189. break;
  4190. case "uneqall":
  4191. WG.uneqall();
  4192. break;
  4193. case "none":
  4194. default:
  4195. break;
  4196. };
  4197. },
  4198.  
  4199. }
  4200. });
  4201. },
  4202.  
  4203.  
  4204. fight_listener: undefined,
  4205. auto_fight: function () {
  4206.  
  4207. if (WG.fight_listener) {
  4208. messageAppend("<hio>自动比试</hio>结束");
  4209. WG.remove_hook(WG.fight_listener);
  4210. WG.fight_listener = undefined;
  4211. return;
  4212. }
  4213. let name = prompt("请输入NPC名称,例如:\"高根明\"");
  4214. let id = WG.find_item(name);
  4215.  
  4216. if (id == null) return;
  4217. WG.fight_listener = WG.add_hook(["text", "sc", "combat"], async function (data) {
  4218. if (data.type == "combat" && data.end) {
  4219. let item = G.items.get(G.id);
  4220. if (item.mp / item.max_mp < 0.8) {
  4221. WG.SendCmd("dazuo");
  4222. }
  4223. WG.SendCmd("liaoshang");
  4224. } else if (data.type == "sc" && data.id == id) {
  4225. let item = G.items.get(id);
  4226. if (item.hp >= item.max_hp) {
  4227. WG.Send("stopstate;fight " + id);
  4228. }
  4229. } else if (data.type == 'sc' && data.id == G.id) {
  4230. if (data.hp >= data.max_hp) {
  4231. WG.Send("stopstate;fight " + id);
  4232. }
  4233. } else if (data.type == 'text') {
  4234. if (data.msg.indexOf("你先调整好自己的状态再来找别人比试吧") >= 0) {
  4235. WG.SendCmd("liaoshang");
  4236. }
  4237. if (data.msg.indexOf("你想趁人之危吗") >= 0) {
  4238. WG.SendCmd("dazuo");
  4239. }
  4240. if (data.msg.indexOf(">你疗伤完毕,深深吸了口气") >= 0) {
  4241. WG.Send("stopstate;fight " + id);
  4242. }
  4243. }
  4244.  
  4245. });
  4246. WG.Send("stopstate;fight " + id);
  4247. messageAppend("<hio>自动比试</hio>开始");
  4248. },
  4249. find_item: function (name) {
  4250. for (let [k, v] of G.items) {
  4251. if (v.name == name) {
  4252. return k;
  4253. }
  4254. }
  4255. return null;
  4256. },
  4257. recover: function (hp, mp, cd, callback) {
  4258. //返回定时器
  4259. if (hp == 0) {
  4260. if (WG.recover_timer) {
  4261. clearTimeout(WG.recover_timer);
  4262. WG.recover_timer = undefined;
  4263. }
  4264. return;
  4265. }
  4266. WG.Send("dazuo");
  4267. WG.recover_timer = setInterval(function () {
  4268. //检查状态
  4269. let item = G.items.get(G.id);
  4270. if (item.mp / item.max_mp < mp) { //内力控制
  4271. if (item.state != "打坐") {
  4272. WG.Send("stopstate;dazuo");
  4273. }
  4274. return;
  4275. }
  4276. if (item.hp / item.max_hp < hp) {
  4277. //血满
  4278. if (item.state != "疗伤") {
  4279. WG.Send("stopstate;liaoshang");
  4280. }
  4281. return;
  4282. }
  4283. if (item.state) WG.Send("stopstate");
  4284. if (cd) {
  4285. for (let [k, v] of G.cds) {
  4286. if (k == "force.tu") continue;
  4287. if (v) return;
  4288. }
  4289. }
  4290. clearInterval(WG.recover_timer);
  4291. callback();
  4292. }, 1000);
  4293. },
  4294. useitem_hook: undefined,
  4295. auto_useitem: async function () {
  4296. var useflag = true;
  4297. if (!WG.useitem_hook) {
  4298. WG.useitem_hook = WG.add_hook("text", function (data) {
  4299. if (data.msg.indexOf("你身上没有这个东西") >= 0 || data.msg.indexOf("太多") >= 0 || data.msg.indexOf("不能使用") >= 0) {
  4300. useflag = false;
  4301. WG.remove_hook(WG.useitem_hook);
  4302. WG.useitem_hook = undefined;
  4303. }
  4304. })
  4305. }
  4306. let name = prompt("请输入物品id,在背包中点击查看物品,即可在提示窗口看到物品id输出");
  4307. if (!name) {
  4308. WG.remove_hook(WG.useitem_hook);
  4309. WG.useitem_hook = undefined;
  4310. return;
  4311. }
  4312. let num = prompt("请输入物品使用次数,例如:\"10\"", '10');
  4313. if (name) {
  4314. if (name.length != 11) {
  4315. L.msg('id不合法');
  4316. WG.remove_hook(WG.useitem_hook);
  4317. WG.useitem_hook = undefined;
  4318. return;
  4319. }
  4320. for (var i = 0; i < num; i++) {
  4321. if (useflag) {
  4322. WG.Send('use ' + name);
  4323. await WG.sleep(1000);
  4324. } else {
  4325. WG.remove_hook(WG.useitem_hook);
  4326. WG.useitem_hook = undefined;
  4327. return;
  4328. }
  4329. }
  4330. }
  4331. WG.remove_hook(WG.useitem_hook);
  4332. WG.useitem_hook = undefined;
  4333. },
  4334.  
  4335. auto_Development_medicine: function () {
  4336. messageClear();
  4337. var a = UI.lyui;
  4338. messageAppend(a);
  4339. const lianyaovue = new Vue({
  4340. el: "#LianYao",
  4341. data: {
  4342. level: 0,
  4343. num: 1,
  4344. info: ""
  4345. },
  4346. created() {
  4347. this.info = GM_getValue("lastmed", $('#medicint_info').val());
  4348. this.level = GM_getValue("lastmedlevel", $('#medicine_level').val());
  4349. },
  4350. methods: {
  4351. startDev: function () {
  4352. if (WG.at('住房-炼药房') || WG.at('帮会-炼药房')) {
  4353. WG.auto_start_dev_med(this.info.replace(" ", ""), this.level, this.num);
  4354. } else {
  4355. L.msg("请先前往炼药房");
  4356. }
  4357. },
  4358. stopDev: function () {
  4359. WG.Send("stopstate");
  4360. }
  4361. }
  4362. });
  4363. },
  4364. findMedItems_hook: undefined,
  4365. auto_start_dev_med: function (med_item, level, num) {
  4366. GM_setValue("lastmed", med_item);
  4367. GM_setValue("lastmedlevel", level);
  4368. if (med_item) {
  4369. if (med_item.split(",").length < 2) {
  4370. L.msg("素材不足");
  4371. return;
  4372. }
  4373. } else {
  4374. L.msg("素材不足");
  4375. return;
  4376. }
  4377. var tmpitme = med_item.split('|');
  4378. var med_items = [];
  4379. for (let pitem of tmpitme) {
  4380. //去除空格
  4381. pitem = pitem.replace(/(^\s*)|(\s*$)/g, "");
  4382. med_items.push(pitem.split(","));
  4383. }
  4384.  
  4385. WG.findMedItems_hook = WG.add_hook("dialog", function (data) {
  4386. if (data.dialog == "pack" && data.items != undefined && data.items.length >= 0) {
  4387. let med_items_ids = [];
  4388.  
  4389. let med_haves = [];
  4390.  
  4391. for (let item of med_items) {
  4392. let med_items_id = [];
  4393. let med_have = [];
  4394. for (let med_item of item) {
  4395. if (JSON.stringify(data.items).indexOf(med_item) >= 0) {
  4396. for (let pitem of data.items) {
  4397. if (pitem.name.indexOf(med_item) >= 0) {
  4398. med_items_id.push(pitem.id);
  4399. med_have.push(med_item);
  4400. }
  4401. }
  4402. }
  4403. }
  4404. med_haves.push(med_have);
  4405. med_items_ids.push(med_items_id);
  4406. }
  4407. let idx = 0;
  4408. for (let med_items_id of med_items_ids) {
  4409. if (med_items_id.length != med_items[idx].length) {
  4410. var temp = [];
  4411. var temparray = [];
  4412. for (var i = 0; i < med_haves[idx].length; i++) {
  4413. temp[med_haves[idx][i]] = typeof med_haves[idx][i];;
  4414. }
  4415. for (var i = 0; i < med_items[idx].length; i++) {
  4416. var type = typeof med_items[idx][i];
  4417. if (!temp[med_items[idx][i]]) {
  4418. temparray.push(med_items[idx][i]);
  4419. } else if (temp[med_items[idx][i]].indexOf(type) < 0) {
  4420. temparray.push(med_items[idx][i]);
  4421. }
  4422. }
  4423. let arr = [];
  4424. for (const item of new Set(temparray)) {
  4425. arr.push(item)
  4426. }
  4427.  
  4428. L.msg("素材不足,请检查背包是否存在" + arr.join('.'));
  4429. WG.remove_hook(WG.findMedItems_hook);
  4430. WG.findMedItems_hook = null;
  4431. return;
  4432. }
  4433. idx = idx + 1;
  4434. }
  4435. var p_Cmd = WG.make_med_cmd(med_items_ids, level, num);
  4436. console.log(p_Cmd);
  4437. WG.SendStep(p_Cmd);
  4438. WG.remove_hook(WG.findMedItems_hook);
  4439. }
  4440. });
  4441. WG.Send('pack');
  4442.  
  4443. },
  4444. make_med_cmd: function (medItem_ids, level, num) {
  4445. let result = "";
  4446. for (let medItem_id of medItem_ids) {
  4447. for (let i = 0; i < parseInt(num); i++) {
  4448. let startCmd = "lianyao2 start " + level + ";";
  4449. let endCmd = "lianyao2 stop;";
  4450. let midCmd = "lianyao2 add ";
  4451. for (let medid of medItem_id) {
  4452. result += startCmd + midCmd + medid + ";"
  4453. }
  4454. result += endCmd;
  4455. }
  4456. }
  4457. return result + "$syso 炼制完成;";
  4458. },
  4459. zmlfire: async function (zml) {
  4460. if (zml) {
  4461.  
  4462. messageAppend("运行" + zml.name, 2);
  4463. if (zml.zmlType == 0 || zml.zmlType == "" || zml.zmlType == undefined) {
  4464. await WG.SendCmd(zml.zmlRun);
  4465. } else if (zml.zmlType == 1) {
  4466. if (unsafeWindow && unsafeWindow.ToRaid) {
  4467. ToRaid.perform(zml.zmlRun);
  4468. }
  4469. } else if (zml.zmlType == 2) {
  4470. eval(zml.zmlRun);
  4471. }
  4472.  
  4473. }
  4474. },
  4475. zmlztjk: function () {
  4476. zml = GM_getValue(roleid + "_zml", zml);
  4477. if (! typeof zml instanceof Array) {
  4478. zml = [];
  4479. }
  4480. messageClear();
  4481. var a = UI.zmlandztjkui;
  4482. messageAppend(a);
  4483. const zmlvue = new Vue({
  4484. el: "#zmlandztjk",
  4485. data: {
  4486. },
  4487. created() {
  4488. this.zmldata = zml;
  4489. },
  4490. methods: {
  4491. run: function (v) {
  4492. WG.zmlfire(v);
  4493. },
  4494. zml: function () {
  4495. WG.zml_edit();
  4496. },
  4497. ztjk: function () {
  4498. WG.ztjk_edit();
  4499. },
  4500. startjk: function () {
  4501. WG.ztjk_func();
  4502. },
  4503. stopjk: function () {
  4504. if (WG.ztjk_hook) {
  4505. WG.remove_hook(WG.ztjk_hook);
  4506. WG.ztjk_hook = undefined;
  4507. messageAppend("已取消注入", 2);
  4508. return;
  4509. }
  4510. messageAppend("未注入", 2);
  4511. }
  4512.  
  4513. }
  4514. })
  4515. },
  4516. zml_edit: function () {
  4517. zml = GM_getValue(roleid + "_zml", zml);
  4518. if (! typeof zml instanceof Array) {
  4519. zml = [];
  4520. }
  4521. messageClear();
  4522. var edithtml = UI.zmlsetting;
  4523. messageAppend(edithtml);
  4524. const zmlvue = new Vue({
  4525. el: "#zmldialog",
  4526. data: {
  4527. singnalzml: {
  4528. name: "",
  4529. zmlType: "0",
  4530. zmlRun: ""
  4531. },
  4532. zmldata: zml
  4533. },
  4534. created() {
  4535. this.zmldata = zml;
  4536. },
  4537. methods: {
  4538. add: function () {
  4539. let zmljson = {
  4540. "name": this.singnalzml.name,
  4541. "zmlRun": this.singnalzml.zmlRun,
  4542. "zmlShow": 0,
  4543. "zmlType": this.singnalzml.zmlType
  4544. };
  4545. let _flag = true;
  4546. for (let item of this.zmldata) {
  4547. if (item.name == zmljson.name) {
  4548. zmljson.zmlShow = item.zmlShow;
  4549. item = zmljson;
  4550. _flag = false;
  4551. }
  4552. }
  4553.  
  4554. if (_flag) {
  4555. this.zmldata.push(zmljson);
  4556. }
  4557. GM_setValue(roleid + "_zml", this.zmldata);
  4558. L.msg("保存成功");
  4559. },
  4560. del: function () {
  4561. this.zmldata.forEach((v, k) => {
  4562. if (v.name == this.singnalzml.name) {
  4563. this.zmldata.baoremove(k);
  4564. GM_setValue(roleid + "_zml", this.zmldata);
  4565. L.msg("删除成功");
  4566. }
  4567. });
  4568. },
  4569. getShare: function () {
  4570. var id = prompt("请输入分享码");
  4571. S.getShareJson(id, (res) => {
  4572. let v = JSON.parse(res.json);
  4573. if (v.zmlRun != undefined) {
  4574. this.singnalzml = v;
  4575. } else {
  4576. L.msg("不合法")
  4577. }
  4578. });
  4579. },
  4580. edit: function (v) {
  4581. this.singnalzml = v;
  4582. },
  4583. showp: function (v) {
  4584. zmlshowsetting = GM_getValue(roleid + "_zmlshowsetting", zmlshowsetting);
  4585. //<span class="zdy-item act-item-zdy" zml="use j8ea35f34ce">大还丹</span>
  4586. let a = $(".room-commands");
  4587.  
  4588. if (zmlshowsetting == 1) {
  4589. a = $(".zdy-commands");
  4590. }
  4591.  
  4592. for (let item of a.children()) {
  4593. if (item.textContent == v.name) {
  4594. item.remove();
  4595. v.zmlShow = 0;
  4596. GM_setValue(roleid + "_zml", zml);
  4597. messageAppend("删除快速使用" + v.name, 1);
  4598. return;
  4599. }
  4600. }
  4601. a.append("<span class=\"zdy-item act-item-zdy act-item\">" + v.name + "</span>")
  4602. v.zmlShow = 1;
  4603. GM_setValue(roleid + "_zml", zml);
  4604. messageAppend("设置快速使用" + v.name, 0, 1);
  4605. //绑定事件
  4606. $('.act-item-zdy').off('click');
  4607. $(".act-item-zdy").on('click', function () {
  4608. T.usezml(0, this.textContent, "");
  4609. });
  4610. },
  4611. share: function (v) {
  4612. S.shareJson(G.id, v);
  4613. }
  4614. }
  4615. })
  4616.  
  4617. },
  4618. isseted: false,
  4619. zml_showp: function () {
  4620. $(".zdy-commands").empty();
  4621. $('.act-item-zdy').remove();
  4622. zmlshowsetting = GM_getValue(roleid + "_zmlshowsetting", zmlshowsetting);
  4623. for (let zmlitem of zml) {
  4624. let a = $(".room-commands");
  4625. if (zmlshowsetting == 1) {
  4626. for (let item of a.children()) {
  4627. if (item.textContent == zmlitem.name) {
  4628. item.remove();
  4629. }
  4630. }
  4631. a = $(".zdy-commands");
  4632. if (!WG.isseted) {
  4633. let px = $('.tool-bar.right-bar').css("bottom");
  4634. px.replace("px", "");
  4635. px = parseInt(px);
  4636. px = px + 24;
  4637. $('.tool-bar.right-bar').css("bottom", px + "px");
  4638. WG.isseted = true;
  4639. }
  4640.  
  4641. } else {
  4642. for (let item of $(".zdy-commands").children()) {
  4643. if (item.textContent == zmlitem.name) {
  4644. item.remove();
  4645. }
  4646. }
  4647. }
  4648.  
  4649. if (zmlitem.zmlShow == 1) {
  4650.  
  4651. a.append("<span class=\"zdy-item act-item-zdy act-item\">" + zmlitem.name + "</span>")
  4652. messageAppend("设置快速使用" + zmlitem.name, 0, 1);
  4653. //绑定事件
  4654. $('.act-item-zdy').off('click');
  4655. $(".act-item-zdy").on('click', function () {
  4656. T.usezml(0, this.textContent, "");
  4657. });
  4658. }
  4659. }
  4660. },
  4661. ztjk_edit: function () {
  4662.  
  4663. //[{"name":"","type":"state","action":"remove","keyword":"busy","ishave":"0","send":""}]
  4664. ztjk_item = GM_getValue(roleid + "_ztjk", ztjk_item);
  4665. messageClear();
  4666. var edithtml = UI.ztjksetting;
  4667. messageAppend(edithtml);
  4668. $(".ztjk_sharedfind").on('click', () => {
  4669. var id = prompt("请输入分享码");
  4670. S.getShareJson(id, (res) => {
  4671. let v = JSON.parse(res.json);
  4672. if (v.type != undefined) {
  4673. $('#ztjk_name').val(v.name);
  4674. $('#ztjk_type').val(v.type);
  4675. $('#ztjk_action').val(v.action);
  4676. $('#ztjk_keyword').val(v.keyword);
  4677. $('#ztjk_ishave').val(v.ishave);
  4678. $('#ztjk_send').val(v.send);
  4679. $('#ztjk_senduser').val(v.senduser);
  4680. $("#ztjk_maxcount").val(v.maxcount);
  4681. $("#ztjk_istip").val(v.istip);
  4682. } else {
  4683. L.msg("不合法")
  4684. }
  4685. });
  4686. });
  4687. $('.ztjk_editadd').on("click", function () {
  4688. var ztjk = {
  4689. name: $('#ztjk_name').val(),
  4690. type: $('#ztjk_type').val(),
  4691. action: $('#ztjk_action').val(),
  4692. keyword: $('#ztjk_keyword').val(),
  4693. ishave: $('#ztjk_ishave').val(),
  4694. send: $('#ztjk_send').val(),
  4695. senduser: $('#ztjk_senduser').val(),
  4696. isactive: 1,
  4697. maxcount: $('#ztjk_maxcount').val(),
  4698. istip: $('#ztjk_istip').val()
  4699. };
  4700. let _flag = true;
  4701. ztjk_item.forEach(function (v, k) {
  4702. if (v.name == $('#ztjk_name').val()) {
  4703. ztjk_item[k] = ztjk;
  4704. _flag = false;
  4705. }
  4706. });
  4707. if (_flag) {
  4708. ztjk_item.push(ztjk);
  4709. }
  4710. GM_setValue(roleid + "_ztjk", ztjk_item);
  4711.  
  4712. WG.ztjk_edit();
  4713. messageAppend("保存成功", 2);
  4714. WG.ztjk_func();
  4715. });
  4716. $(".ztjk_editdel").on('click', function () {
  4717. let name = $('#ztjk_name').val();
  4718. ztjk_item.forEach(function (v, k) {
  4719. if (v.name == name) {
  4720. ztjk_item.baoremove(k);
  4721. GM_setValue(roleid + "_ztjk", ztjk_item);
  4722. WG.ztjk_edit();
  4723. messageAppend("删除成功", 2);
  4724. WG.ztjk_func();
  4725. }
  4726. });
  4727. })
  4728. ztjk_item.forEach(function (v, k) {
  4729. var btn = "<span class='addrun" + k + "'>编辑" + v.name + "</span>";
  4730. $('#ztjk_show').append(btn);
  4731. var tmptext = "注入";
  4732. if (v.isactive && v.isactive == 1) {
  4733. tmptext = "暂停";
  4734. }
  4735. var setbtn = "<span class='setaction" + k + "'>" + tmptext + v.name + "</span>";
  4736. $('#ztjk_set').append(setbtn);
  4737. var btn3 = "<span class='shareztjk" + k + "'>分享" + v.name + "</span>";
  4738. $('#ztjk_show').append(btn3);
  4739. });
  4740. ztjk_item.forEach(function (v, k) {
  4741. $(".addrun" + k).on("click", function () {
  4742. $('#ztjk_name').val(v.name);
  4743. $('#ztjk_type').val(v.type);
  4744. $('#ztjk_action').val(v.action);
  4745. $('#ztjk_keyword').val(v.keyword);
  4746. $('#ztjk_ishave').val(v.ishave);
  4747. $('#ztjk_send').val(v.send);
  4748. $('#ztjk_senduser').val(v.senduser);
  4749. $("#ztjk_maxcount").val(v.maxcount);
  4750. if (v.istip == null) {
  4751. $("#ztjk_istip").val(1);
  4752. } else {
  4753.  
  4754. } $("#ztjk_istip").val(v.istip);
  4755. });
  4756. $('.setaction' + k).on('click', function () {
  4757. if (this.textContent.indexOf("暂停") >= 0) {
  4758. ztjk_item[k].isactive = 0;
  4759. } else {
  4760. ztjk_item[k].isactive = 1;
  4761. }
  4762. GM_setValue(roleid + "_ztjk", ztjk_item);
  4763. WG.ztjk_func();
  4764. WG.ztjk_edit();
  4765. });
  4766. $('.shareztjk' + k).on('click', function () {
  4767. S.shareJson(G.id, v);
  4768. });
  4769. });
  4770.  
  4771. },
  4772. ytjk_func: function () {
  4773. WG.add_hook("room", async function (data) {
  4774. if (G.yaotaFlag && data.path != 'zc/mu/shishenta') {
  4775. $('.channel pre').append("<hig>【插件】" + "第 " + G.yaotaCount + " 次妖塔共获得 " + G.yaoyuan + " 点妖元,结束时间: " + dateFormat("YYYY-mm-dd HH:MM", new Date()) + "。<br><hig>")
  4776. $('.tm').append("<hig>【插件】" + "第 " + G.yaotaCount + " 次妖塔共获得 " + G.yaoyuan + " 点妖元,结束时间: " + dateFormat("YYYY-mm-dd HH:MM", new Date()) + "。<br><hig>")
  4777. setTimeout(async function () {
  4778. while (!WG.is_free()) {
  4779. await WG.sleep(1000)
  4780. }
  4781. if (G.yaoyuan == 261) {
  4782. WG.SendCmd("tm 第 " + G.yaotaCount + " 次妖塔圆满完成,撒花~~~~~")
  4783. } else {
  4784. WG.SendCmd("tm 第 " + G.yaotaCount + " 次妖塔遗憾收场,撒花~~~~~")
  4785. }
  4786. $('#yt_prog').remove()
  4787. G.yaotaFlag = false;
  4788. G.yaoyuan = 0;
  4789.  
  4790. }, 0)
  4791. }
  4792. if (data.path == 'zc/mu/shishenta') {
  4793. $(`.state-bar`).before(`<div id=yt_prog>开始攻略妖塔</div>`)
  4794. G.yaotaCount = G.yaotaCount + 1;
  4795. $('.channel pre').append("<hig>【插件】" + "开始第 " + G.yaotaCount + " 次攻略妖塔,现在时间是:" + dateFormat("YYYY-mm-dd HH:MM", new Date()) + "。<br><hig>")
  4796. $('.tm').append("<hig>【插件】" + "开始第 " + G.yaotaCount + " 次攻略妖塔,现在时间是:" + dateFormat("YYYY-mm-dd HH:MM", new Date()) + "。<br><hig>")
  4797. G.yaoyuan = 0;
  4798. G.yaotaFlag = true;
  4799. }
  4800. })
  4801. },
  4802. ztjk_hook: undefined,
  4803. ztjk_func: function () {
  4804. if (WG.ztjk_hook) {
  4805. WG.remove_hook(WG.ztjk_hook);
  4806. }
  4807. WG.ztjk_hook = undefined;
  4808. ztjk_item = GM_getValue(roleid + "_ztjk", ztjk_item);
  4809. WG.ztjk_hook = WG.add_hook(["dispfm", "enapfm", "dialog", "room", "itemadd", "itemremove", "status", "text", "msg", "die", "combat", "sc"], function (data) {
  4810. ztjk_item.forEach(function (v, k) {
  4811. if (v.isactive != 1) {
  4812. return;
  4813. }
  4814. if (data.type == v.type) {
  4815. let keywords = v.keyword.split("|");
  4816. switch (v.type) {
  4817. case "status":
  4818. if (!data.name) {
  4819. if (v.action == data.action) {
  4820. for (var keyworditem of keywords) {
  4821. if (data.sid.indexOf(keyworditem) >= 0) {
  4822. if (v.ishave == "0" && data.id != G.id) {
  4823. if (v.istip == "1") {
  4824. messageAppend("已触发" + v.name, 1);
  4825. }
  4826. if (data.id) {
  4827. let p = v.send.replace("{id}", data.id);
  4828. WG.SendCmd(p);
  4829. } else {
  4830. WG.SendCmd(v.send);
  4831. }
  4832. } else if (v.ishave == "1" && data.id == G.id) {
  4833. if (data.count != undefined && v.maxcount) {
  4834. if (parseInt(data.count) < parseInt(v.maxcount)) {
  4835. if (v.istip != "0") {
  4836. messageAppend("已触发" + v.name, 1);
  4837. }
  4838. if (data.id) {
  4839. let p = v.send.replace("{id}", data.id);
  4840. WG.SendCmd(p);
  4841. } else {
  4842. WG.SendCmd(v.send);
  4843. }
  4844. }
  4845. } else {
  4846. if (v.istip != "0") {
  4847. messageAppend("已触发" + v.name, 1);
  4848. }
  4849. if (data.id) {
  4850. let p = v.send.replace("{id}", data.id);
  4851. WG.SendCmd(p);
  4852. } else {
  4853. WG.SendCmd(v.send);
  4854. }
  4855. }
  4856. }
  4857. }
  4858. }
  4859. }
  4860. } else {
  4861. if (v.action == data.action) {
  4862. for (var keyworditem of keywords) {
  4863. if (data.sid.indexOf(keyworditem) >= 0 || data.name.indexOf(keyworditem) >= 0) {
  4864. if (v.ishave == "0" && data.id != G.id) {
  4865. if (v.istip != "0") {
  4866. messageAppend("已触发" + v.name, 1);
  4867. }
  4868. if (data.id) {
  4869. let p = v.send.replace("{id}", data.id);
  4870. WG.SendCmd(p);
  4871. } else {
  4872. WG.SendCmd(v.send);
  4873. }
  4874. } else if (v.ishave == "1" && data.id == G.id) {
  4875. if (data.count != undefined && v.maxcount) {
  4876. if (parseInt(data.count) < parseInt(v.maxcount)) {
  4877. messageAppend("当前层数" + data.count + ",已触发" + v.name, 1);
  4878. if (data.id) {
  4879. let p = v.send.replace("{id}", data.id);
  4880. WG.SendCmd(p);
  4881. } else {
  4882. WG.SendCmd(v.send);
  4883. }
  4884. }
  4885. } else {
  4886. if (v.istip != "0") {
  4887. messageAppend("已触发" + v.name, 1);
  4888. }
  4889. if (data.id) {
  4890. let p = v.send.replace("{id}", data.id);
  4891. WG.SendCmd(p);
  4892. } else {
  4893. WG.SendCmd(v.send);
  4894. }
  4895. }
  4896. }
  4897. }
  4898. }
  4899. }
  4900. }
  4901. break;
  4902. case "text":
  4903. for (var keyworditem of keywords) {
  4904. if (data.msg.indexOf(keyworditem) >= 0) {
  4905. if (v.istip != "0") {
  4906. messageAppend("已触发" + v.name, 1);
  4907. }
  4908. if (data.msg) {
  4909. let p = v.send.replace("{content}", data.msg.replaceAll("\n", "").replaceAll(",", "").replaceAll(";", ""));
  4910. WG.SendCmd(p);
  4911. } else {
  4912. WG.SendCmd(v.send);
  4913. }
  4914. }
  4915. }
  4916. break;
  4917. case "msg":
  4918. if (!v.senduser || v.senduser == "" || v.senduser == null) {
  4919. for (var keyworditem of keywords) {
  4920. if (data.content.indexOf(keyworditem) >= 0) {
  4921. if (v.istip != "0") {
  4922. messageAppend("已触发" + v.name, 1);
  4923. }
  4924. if (data.content) {
  4925. let p = v.send.replace("{content}", data.content.replaceAll("\n", "").replaceAll(",", "").replaceAll(";", ""));
  4926. WG.SendCmd(p);
  4927. } else {
  4928. WG.SendCmd(v.send);
  4929. }
  4930. }
  4931. }
  4932. return;
  4933. }
  4934. let sendusers = v.senduser.split("|");
  4935. for (let item of sendusers) {
  4936. if (data.name == item) {
  4937. for (var keyworditem of keywords) {
  4938. if (data.content.indexOf(keyworditem) >= 0) {
  4939. if (v.istip != "0") {
  4940. messageAppend("已触发" + v.name, 1);
  4941. }
  4942. if (data.content) {
  4943. let p = v.send.replace("{content}", data.content);
  4944. WG.SendCmd(p);
  4945. } else {
  4946. WG.SendCmd(v.send);
  4947. }
  4948. }
  4949. }
  4950. } else if ((item == "谣言" && data.ch == "rumor") ||
  4951. (item == "系统" && data.ch == 'sys') ||
  4952. (item == "门派" && data.ch == 'fam') ||
  4953. (item == "帮派" && data.ch == 'pty')) {
  4954. for (var keyworditem of keywords) {
  4955. if (data.content.indexOf(keyworditem) >= 0) {
  4956. if (v.istip != "0") {
  4957. messageAppend("已触发" + v.name, 1);
  4958. }
  4959. if (data.content) {
  4960. let p = v.send.replace("{content}", data.content);
  4961. WG.SendCmd(p);
  4962. } else {
  4963. WG.SendCmd(v.send);
  4964. }
  4965. }
  4966. }
  4967. }
  4968. // else if (item == "系统" && data.ch == 'sys') {
  4969. // for (var keyworditem of keywords) {
  4970. // if (data.content.indexOf(keyworditem) >= 0) {
  4971. // messageAppend("已触发" + v.name, 1);
  4972. // WG.SendCmd(v.send);
  4973. // }
  4974. // }
  4975. // }
  4976. }
  4977. break;
  4978.  
  4979. case "die":
  4980. if (data.commands != null) {
  4981. if (v.istip != "0") {
  4982. messageAppend("已触发" + v.name, 1);
  4983. }
  4984. WG.SendCmd(v.send);
  4985. }
  4986. break;
  4987. case "itemadd":
  4988. for (var keyworditem of keywords) {
  4989.  
  4990. if (data.name.indexOf(keyworditem) >= 0) {
  4991. if (v.ishave == 2) {
  4992. if (data.p != null) {
  4993. break
  4994. }
  4995. }
  4996. if (v.istip != "0") {
  4997. messageAppend("已触发" + v.name, 1);
  4998. }
  4999. if (data.id) {
  5000. let p = v.send.replace("{id}", data.id);
  5001. WG.SendCmd(p);
  5002. } else {
  5003. WG.SendCmd(v.send);
  5004. }
  5005. }
  5006. }
  5007. break;
  5008. case "room":
  5009. for (var keyworditem of keywords) {
  5010. if (data.name.indexOf(keyworditem) >= 0) {
  5011. if (v.istip != "0") {
  5012. messageAppend("已触发" + v.name, 1);
  5013. }
  5014. let p = v.send.replace("{name}", data.name);
  5015. WG.SendCmd(p);
  5016. return;
  5017. }
  5018. for (let roomItem of roomData) {
  5019. if (roomItem == 0) { return; }
  5020. if (roomItem.name.indexOf(keyworditem) >= 0 && roomItem.p == undefined) {
  5021. if (v.istip != "0") {
  5022. messageAppend("已触发" + v.name, 1);
  5023. }
  5024. let p = v.send.replace("{name}", data.name);
  5025. WG.SendCmd(p);
  5026. return;
  5027. }
  5028. }
  5029. }
  5030. break;
  5031. case "dialog":
  5032. if (data.dialog && data.dialog == "pack") {
  5033. for (var keyworditem of keywords) {
  5034. if (data.name && data.name.indexOf(keyworditem) >= 0) {
  5035. if (v.istip != "0") {
  5036. messageAppend("已触发" + v.name, 1);
  5037. }
  5038. let p = v.send.replace("{id}", data.id);
  5039. WG.SendCmd(p);
  5040. }
  5041. }
  5042. }
  5043. break;
  5044. case "combat":
  5045. for (var keyworditem of keywords) {
  5046. if (keyworditem == "start" && data.start == 1) {
  5047. if (v.istip != "0") {
  5048. messageAppend("已触发" + v.name, 1);
  5049. }
  5050. WG.SendCmd(v.send);
  5051. } else if (keyworditem == "end" && data.end == 1) {
  5052. if (v.istip != "0") {
  5053. messageAppend("已触发" + v.name, 1);
  5054. }
  5055. WG.SendCmd(v.send);
  5056. }
  5057. }
  5058. break;
  5059. case "sc":
  5060. let item = G.items.get(G.id);
  5061. if (v.ishave == "0") {
  5062. //查找id
  5063. if (!v.senduser) { }
  5064. let pid = WG.find_item(v.senduser);
  5065. item = G.items.get(pid);
  5066. }
  5067. if (item && item.hp) {
  5068. if ((item.hp / item.max_hp) * 100 < (parseInt(keywords[0]))) {
  5069. if (v.istip != "0") {
  5070. messageAppend("已触发" + v.name, 1);
  5071. }
  5072. WG.SendCmd(v.send);
  5073. }
  5074. }
  5075. if (item && item.mp) {
  5076. if ((item.mp / item.max_mp) * 100 < (parseInt(keywords[1]))) {
  5077. if (v.istip != "0") {
  5078. messageAppend("已触发" + v.name, 1);
  5079. }
  5080. WG.SendCmd(v.send);
  5081. }
  5082. }
  5083. break;
  5084. case "enapfm":
  5085. for (let item of keywords) {
  5086. if (item == data.id) {
  5087. if (v.istip != "0") {
  5088. messageAppend("已触发" + v.name, 1);
  5089. }
  5090. WG.SendCmd(v.send);
  5091. }
  5092. }
  5093. break;
  5094. case "dispfm":
  5095. for (let item of keywords) {
  5096. if (item == data.id) {
  5097. if (v.istip != "0") {
  5098. messageAppend("已触发" + v.name, 1);
  5099. }
  5100. WG.SendCmd(v.send);
  5101. }
  5102. }
  5103. break;
  5104. default:
  5105. break;
  5106. }
  5107. }
  5108.  
  5109. });
  5110.  
  5111. });
  5112. messageAppend("已重新注入自动监控", 0, 1);
  5113. },
  5114. daily_hook: undefined,
  5115. oneKeyDaily: async function () {
  5116. messageAppend("本脚本会自动执行师门及自动进退小树林,请确保精力足够再执行,请不要点击任务菜单", 1);
  5117. var fbnums = 0;
  5118. WG.daily_hook = WG.add_hook("dialog", async function (data) {
  5119. if (data.dialog == "tasks") {
  5120. if (data.items) {
  5121. let dailylog = "";
  5122. let dailystate = "";
  5123. for (let item of data.items) {
  5124. if (item.id == "signin") {
  5125. dailylog = item.desc;
  5126. dailystate = item.state;
  5127. }
  5128. }
  5129. if (dailystate == 3) {
  5130. messageAppend("日常已完成", 1);
  5131. //WG.zdwk();
  5132. setTimeout(() => {
  5133. WG.remove_hook(WG.daily_hook);
  5134. WG.daily_hook = undefined;
  5135. }, 1);
  5136.  
  5137. return;
  5138. } else {
  5139. let str = dailylog;
  5140. str = str.replace(/<(?!\/?p\b)[^>]+>/ig, '');
  5141. let str1 = str.split("精力消耗");
  5142.  
  5143. let n = str1[0].match(":([^%]+)/20")[1];
  5144. let n1 = str1[1].match(":([^%]+)/200")[1];
  5145. n = 20 - parseInt(n);
  5146. fbnums = 20 - parseInt(n1) / 10;
  5147. messageAppend("还需要" + n + "次师门任务," + fbnums + "次副本,才可签到");
  5148. if (n != 0) {
  5149. //$(".sm_button").click();
  5150. $(".sm_button").text("停止(Q)");
  5151. WG.sm_state = 0;
  5152. setTimeout(WG.smTask, 200);
  5153. return
  5154. } else {
  5155. WG.sm_state = -1;
  5156. }
  5157.  
  5158. //WG.remove_hook(WG.daily_hook);
  5159. //WG.daily_hook = undefined;
  5160. }
  5161.  
  5162. }
  5163. }
  5164. });
  5165. WG.SendCmd("tasks");
  5166.  
  5167. await WG.sleep(2000);
  5168. while (WG.sm_state >= 0) {
  5169. await WG.sleep(2000);
  5170. }
  5171. if (fbnums <= 0) {
  5172. WG.Send("taskover signin");
  5173. messageAppend("<hiy>任务完成</hiy>");
  5174. WG.remove_hook(WG.daily_hook);
  5175. WG.daily_hook = undefined;
  5176. this.timer_close();
  5177. //WG.zdwk();
  5178. this.needGrove = 0;
  5179. this.fbnum = 0;
  5180. } else {
  5181. WG.grove_auto(fbnums);
  5182. }
  5183.  
  5184. // var sxplace = sm_array[family].sxplace;
  5185. // var sx = sm_array[family].sx;
  5186. // if (sxplace.indexOf("-") == 0) {
  5187. // WG.Send(sxplace.replace('-', ''));
  5188. // } else {
  5189. // WG.go(sxplace);
  5190. // }
  5191. // await WG.sleep(1000);
  5192. // WG.SendCmd("ask2 $findPlayerByName(\"" + sx + "\")");
  5193. // await WG.sleep(1000);
  5194.  
  5195. },
  5196. oneKeyQA: async function () {
  5197. WG.Send("stopstate");
  5198. WG.sm_state = -1;
  5199. var sxplace = sm_array[family].sxplace;
  5200. var sx = sm_array[family].sx;
  5201. if (sxplace.indexOf("-") == 0) {
  5202. WG.Send(sxplace.replace('-', ''));
  5203. } else {
  5204. WG.go(sxplace);
  5205. }
  5206. await WG.sleep(2000);
  5207. WG.SendCmd("select $findPlayerByName(\"" + sx + "\");$wait 200;ask2 $findPlayerByName(\"" + sx + "\")");
  5208. await WG.sleep(1000);
  5209.  
  5210. },
  5211. sd_hook: undefined,
  5212. oneKeySD: function () {
  5213. var n = 0;
  5214. messageAppend("本脚本自动执行购买扫荡符,进行追捕扫荡,请确保元宝足够,请不要点击任务菜单\n注意! 超过上限会自动放弃", 1);
  5215. WG.sd_hook = WG.add_hook(["dialog", "text"], async function (data) {
  5216. var id = 0;
  5217. var loop = 2;
  5218. if (data.type == 'text' && data.msg) {
  5219. id = WG.getIdByName("程药发");
  5220. if (data.msg.indexOf("无法快速完") >= 0) {
  5221. WG.Send("select " + id);
  5222. await WG.sleep(200);
  5223. WG.Send("ask1 " + id);
  5224. await WG.sleep(200);
  5225. WG.Send("ask2 " + id);
  5226. await WG.sleep(200);
  5227. while (loop) {
  5228. loop--;
  5229. console.log("ask3 " + id);
  5230.  
  5231. WG.Send("ask3 " + id);
  5232. await WG.sleep(1000);
  5233. }
  5234.  
  5235. //messageAppend("追捕已完成", 1);
  5236. //WG.Send("ask3 " + id);
  5237. //WG.zdwk();
  5238. //WG.remove_hook(WG.sd_hook);
  5239. //WG.sd_hook = undefined;
  5240. }
  5241. //<hig>你的追捕任务完成了,目前完成20/20个,已连续完成40个。</hig>
  5242. if (data.msg.indexOf("追捕任务完成了") >= 0) {
  5243. let str = data.msg;
  5244. str = str.replace(/<(?!\/?p\b)[^>]+>/ig, '');
  5245. n = str.match("目前完成([^%]+)/20")[1];
  5246. if (n == "20") {
  5247. messageAppend("追捕已完成", 1);
  5248. await WG.sleep(2000);
  5249. WG.remove_hook(WG.sd_hook);
  5250. WG.sd_hook = undefined;
  5251. }
  5252. }
  5253. if (data.msg.indexOf("多历练一番") >= 0 || data.msg.indexOf("没有那么多元宝") >= 0) {
  5254. messageAppend("等级太低无法接取追捕,自动取消", 1);
  5255. WG.remove_hook(WG.sd_hook);
  5256. WG.sd_hook = undefined;
  5257. }
  5258. if (data.msg.indexOf("你的追捕任务已经完成了") >= 0) {
  5259. messageAppend("追捕已完成", 1);
  5260. WG.remove_hook(WG.sd_hook);
  5261. WG.sd_hook = undefined;
  5262. }
  5263. if (data.msg.indexOf("你的扫荡符不够。") >= 0) {
  5264. id = WG.getIdByName("程药发");
  5265.  
  5266. messageAppend("还需要" + n + "次扫荡,自动购入" + n + "张扫荡符");
  5267. WG.Send("shop 0 " + n);
  5268. await WG.sleep(1000);
  5269. while (loop) {
  5270. loop--;
  5271. console.log("ask3 " + id);
  5272. WG.Send("ask3 " + id);
  5273. await WG.sleep(1000);
  5274. }
  5275.  
  5276. }
  5277. }
  5278. if (data.dialog == "tasks") {
  5279. if (data.items) {
  5280. let dailylog = "";
  5281. for (let item of data.items) {
  5282. if (item.id == "yamen") {
  5283. dailylog = item.desc;
  5284. }
  5285. }
  5286. let str = dailylog;
  5287. str = str.replace(/<(?!\/?p\b)[^>]+>/ig, '');
  5288.  
  5289. n = str.match("完成([^%]+)/20")[1];
  5290. n = 20 - parseInt(n);
  5291. if (n == 0) {
  5292. messageAppend("追捕已完成", 1);
  5293. //WG.zdwk();
  5294. WG.remove_hook(WG.sd_hook);
  5295. WG.sd_hook = undefined;
  5296. return;
  5297. } else {
  5298. do {
  5299. WG.go("扬州城-衙门正厅");
  5300. await WG.sleep(1000);
  5301. }
  5302. while (!WG.getIdByName("程药发"))
  5303. WG.SendCmd("ask3 $pname(\"程药发\")");
  5304. }
  5305.  
  5306. }
  5307. }
  5308. });
  5309. WG.Send("stopstate");
  5310. WG.SendCmd("tasks");
  5311. },
  5312. gpSkill_hook: undefined,
  5313. getPlayerSkill: async function () {
  5314. WG.gpSkill_hook = WG.add_hook("dialog", (data) => {
  5315. if ((data.dialog && data.dialog == 'skills') && data.items && data.items != null) {
  5316. var html = `<div class="item-commands ">
  5317. <span class = "copycha" data-clipboard-target = ".target1" >
  5318. 技能详情复制到剪贴板 </span></div> `;
  5319. messageAppend(html);
  5320. $(".copycha").on('click', () => {
  5321. var dd = G.level.replace(/<\/?.+?>/g, "");
  5322. var dds = dd.replace(/ /g, "");
  5323. var copydata = {
  5324. player: role,
  5325. roleid: roleid,
  5326. level: dds,
  5327. family: G.pfamily,
  5328. items: data.items
  5329. };
  5330. copyToClipboard(JSON.stringify(copydata));
  5331. messageAppend("复制成功");
  5332. });
  5333. WG.remove_hook(WG.gpSkill_hook);
  5334. WG.gpSkill_hook = undefined;
  5335. }
  5336. });
  5337. KEY.do_command("skills");
  5338. KEY.do_command("skills");
  5339. WG.Send("cha");
  5340. },
  5341. make_config: async function () {
  5342. let _config = {};
  5343. let keys = GM_listValues();
  5344. keys.forEach(key => {
  5345. if (key.indexOf(roleid) >= 0) {
  5346. _config[key] = GM_getValue(key);
  5347. }
  5348. });
  5349. _config._shieldswitch = GM_getValue("_shieldswitch", shieldswitch);
  5350. _config._shield = GM_getValue("_shield", shield);
  5351. _config._shieldkey = GM_getValue("_shieldkey", shieldkey);
  5352. _config._pushSwitch = GM_getValue("_pushSwitch", pushSwitch);
  5353. _config._pushType = GM_getValue("_pushType", pushType);
  5354. _config._pushToken = GM_getValue("_pushToken", pushToken);
  5355. // _config._pushUrl = GM_getValue("_pushUrl", pushUrl);
  5356.  
  5357. S.uploadUserConfig(G.id, _config, (res) => {
  5358. if (res == "true") {
  5359. L.msg("已成功上传");
  5360. }
  5361. });
  5362. },
  5363. load_config: async function () {
  5364. S.getUserConfig(G.id, (res) => {
  5365. if (res != "") {
  5366. let _config = JSON.parse(res);
  5367. for (const key in _config) {
  5368. GM_setValue(key, _config[key]);
  5369. }
  5370.  
  5371.  
  5372. GI.configInit();
  5373.  
  5374. WG.setting();
  5375. WG.ztjk_func();
  5376. WG.zml_showp();
  5377. WG.dsj_func();
  5378. L.msg("已成功加载");
  5379. }
  5380. });
  5381. }, //设置
  5382. setting: function () {
  5383. KEY.do_command("setting");
  5384.  
  5385. $('.footer-item')[$('.footer-item').length - 1].click();
  5386. // GI.configInit();
  5387.  
  5388. if ($('.dialog-custom .zdy_dialog').length == 0) {
  5389. var a = UI.syssetting();
  5390. $(".dialog-custom").prepend(a);
  5391.  
  5392. }
  5393. $(".dialog-custom").off('click');
  5394. $("#family").off('change');
  5395. $('#wudao_pfm').off('focusout');
  5396. $(".savebtn").off('click')
  5397. $('.clear_skillJson').off('click')
  5398. $('.backup_btn').off('click')
  5399. $('.clean_dps').off('click')
  5400. $('.load_btn').off('click')
  5401. $(".update_store").off('click')
  5402. $(".update_id_all").off('click')
  5403. $(".clean_id_all").off('click')
  5404. $('#autobuy').off('change')
  5405. $('#autoSkillPaperSell').off('change')
  5406. $('#loginhml').off('change')
  5407. $('#backimageurl').off('change')
  5408. $('#statehml').off('change')
  5409. $('#shieldkey').off('focusout');
  5410. $('#shield').off('focusout');
  5411. $('#funnycalc').off('click')
  5412. $('#dpssakada').off('click')
  5413. $('#silence').off('click')
  5414. $('#zdyskilllist').off('change')
  5415. $('#zdyskillsswitch').off('click')
  5416. $('#shieldswitch').off('click')
  5417. $('#welcome').off('focusout');
  5418. $('#die_str').off('focusout');
  5419. $('#blacklist').off('change')
  5420. $('#auto_command').off('change')
  5421. $('#store_fenjie_info').off('change')
  5422. $('#store_drop_info').off('change')
  5423. $('#lock_info').off('change')
  5424. $('#store_info2').off('change')
  5425. $('#store_info').off('change')
  5426. $('#unauto_pfm').off('change')
  5427. $('#getitemShow').off('click')
  5428. $("#zmlshowsetting").off('change')
  5429. $("#bagFull").off('change')
  5430. $("pushSwitch").off('click');
  5431. $("pushType").off('change');
  5432. $("pushToken").off('change');
  5433. // $("pushUrl").off('change');
  5434. $('#autorelogin').off('click')
  5435. $('#autoupdateStore').off('click')
  5436. $('#saveAddr').off('click')
  5437. $('#autorewardgoto').off('click')
  5438. $('#autopfmswitch').off('click')
  5439. $('#auto_eq').off('change')
  5440. $('#ks_Boss').off('click')
  5441.  
  5442. $('#marry_kiss').off('click')
  5443. $('#ks_wait').off('focusout');
  5444.  
  5445. $('#ks_pfm').off('focusout');
  5446. $('#sm_getstore').off('click')
  5447.  
  5448. $('#sm_price').off('click')
  5449. $('#sm_any').off('click')
  5450. $('#sm_loser').off('click')
  5451.  
  5452.  
  5453. $(".dialog-custom").on("click", ".switch2", UI.switchClick);
  5454. $("#family").change(function () {
  5455. family = $("#family").val();
  5456. GM_setValue(roleid + "_family", family);
  5457. });
  5458. $('#wudao_pfm').focusout(function () {
  5459. wudao_pfm = $('#wudao_pfm').val();
  5460. GM_setValue(roleid + "_wudao_pfm", wudao_pfm);
  5461. });
  5462. $('#sm_loser').click(function () {
  5463. sm_loser = WG.switchReversal($(this));
  5464. GM_setValue(roleid + "_sm_loser", sm_loser);
  5465. });
  5466. $('#sm_any').click(function () {
  5467. sm_any = WG.switchReversal($(this));
  5468. GM_setValue(roleid + "_sm_any", sm_any);
  5469. });
  5470. $('#sm_price').click(function () {
  5471. sm_price = WG.switchReversal($(this));
  5472. GM_setValue(roleid + "_sm_price", sm_price);
  5473. });
  5474. $('#sm_getstore').click(function () {
  5475. sm_getstore = WG.switchReversal($(this));
  5476. GM_setValue(roleid + "_sm_getstore", sm_getstore);
  5477. });
  5478. $('#ks_pfm').focusout(function () {
  5479. ks_pfm = $('#ks_pfm').val();
  5480. GM_setValue(roleid + "_ks_pfm", ks_pfm);
  5481. });
  5482. $('#ks_wait').focusout(function () {
  5483. ks_wait = $('#ks_wait').val();
  5484. GM_setValue(roleid + "_ks_wait", ks_wait);
  5485. });
  5486. $('#marry_kiss').click(function () {
  5487. automarry = WG.switchReversal($(this));
  5488. GM_setValue(roleid + "_automarry", automarry);
  5489. });
  5490. $('#ks_Boss').click(function () {
  5491. autoKsBoss = WG.switchReversal($(this));
  5492. GM_setValue(roleid + "_autoKsBoss", autoKsBoss);
  5493. });
  5494. $('#auto_eq').focusout(function () {
  5495. autoeq = $('#auto_eq').val();
  5496. GM_setValue(roleid + "_auto_eq", autoeq);
  5497. });
  5498. $('#autopfmswitch').click(function () {
  5499. auto_pfmswitch = WG.switchReversal($(this));
  5500. GM_setValue(roleid + "_auto_pfmswitch", auto_pfmswitch);
  5501. if (auto_pfmswitch == "开") {
  5502. G.auto_preform = true;
  5503. } else {
  5504. G.auto_preform = false;
  5505. }
  5506. });
  5507. $('#autopfmmode').click(function () {
  5508. auto_pfm_mode = WG.switchReversal($(this));
  5509. GM_setValue(roleid + "_auto_pfm_mode", auto_pfm_mode);
  5510. if (auto_pfm_mode == "开") {
  5511. G.auto_pfm_mode = true;
  5512. } else {
  5513. G.auto_pfm_mode = false;
  5514. }
  5515. });
  5516. $('#autorewardgoto').click(function () {
  5517. auto_rewardgoto = WG.switchReversal($(this));
  5518. GM_setValue(roleid + "_auto_rewardgoto", auto_rewardgoto);
  5519. });
  5520.  
  5521. $('#busyinfo').click(function () {
  5522. busy_info = WG.switchReversal($(this));
  5523. GM_setValue(roleid + "_busy_info", busy_info);
  5524. });
  5525. $('#saveAddr').click(function () {
  5526. saveAddr = WG.switchReversal($(this));
  5527. GM_setValue(roleid + "_saveAddr", saveAddr);
  5528. });
  5529.  
  5530. $('#autoupdateStore').click(function () {
  5531. auto_updateStore = WG.switchReversal($(this));
  5532. GM_setValue(roleid + "_auto_updateStore", auto_updateStore);
  5533. });
  5534. $('#autorelogin').click(function () {
  5535. auto_relogin = WG.switchReversal($(this));
  5536. GM_setValue(roleid + "_auto_relogin", auto_relogin);
  5537. });
  5538. $("#zmlshowsetting").change(function () {
  5539. zmlshowsetting = $('#zmlshowsetting').val();
  5540. GM_setValue(roleid + "_zmlshowsetting", zmlshowsetting);
  5541. WG.zml_showp();
  5542. });
  5543. $("#bagFull").change(function () {
  5544. bagFull = $('#bagFull').val();
  5545. GM_setValue(roleid + "_bagFull", bagFull);
  5546. });
  5547. $("#pushSwitch").click(function () {
  5548. pushSwitch = WG.switchReversal($(this));
  5549. GM_setValue("_pushSwitch", pushSwitch);
  5550. });
  5551. $("#pushType").change(function () {
  5552. pushType = $('#pushType').val();
  5553. GM_setValue("_pushType", pushType);
  5554. });
  5555. $("#pushToken").focusout(function () {
  5556. pushToken = $('#pushToken').val();
  5557. GM_setValue("_pushToken", pushToken);
  5558. });
  5559. // $("#pushUrl").focusout(function () {
  5560. // pushUrl = $('#pushUrl').val();
  5561. // GM_setValue("_pushUrl", pushUrl);
  5562. // });
  5563. $("#color_select").change(function () {
  5564. color_select = $('#color_select').val();
  5565. GM_setValue("color_select", color_select);
  5566. });
  5567. $('#getitemShow').click(function () {
  5568. getitemShow = WG.switchReversal($(this));
  5569. GM_setValue(roleid + "_getitemShow", getitemShow);
  5570.  
  5571. if (getitemShow == "开") {
  5572. G.getitemShow = true;
  5573. } else {
  5574. G.getitemShow = false;
  5575. }
  5576. });
  5577. $('#unauto_pfm').change(function () {
  5578. unauto_pfm = $('#unauto_pfm').val();
  5579. GM_setValue(roleid + "_unauto_pfm", unauto_pfm);
  5580. var unpfm = unauto_pfm.split(',');
  5581. blackpfm = [];
  5582. for (var pfmname of unpfm) {
  5583. if (pfmname)
  5584. blackpfm.push(pfmname);
  5585. }
  5586. });
  5587. $('#store_info').change(function () {
  5588. zdy_item_store = $('#store_info').val();
  5589. GM_setValue(roleid + "_zdy_item_store", zdy_item_store);
  5590. store_list = zdy_item_store.split(",");
  5591. store_list = store_list.concat(zdy_item_store2.split(","));
  5592. });
  5593. $('#store_info2').change(function () {
  5594. zdy_item_store2 = $('#store_info2').val();
  5595. GM_setValue(roleid + "_zdy_item_store2", zdy_item_store2);
  5596. store_list = zdy_item_store2.split(",");
  5597. store_list = store_list.concat(zdy_item_store.split(","));
  5598. });
  5599. $('#lock_info').change(function () {
  5600. zdy_item_lock = $('#lock_info').val();
  5601. GM_setValue(roleid + "_zdy_item_lock", zdy_item_lock);
  5602. lock_list = zdy_item_lock.split(",");
  5603. });
  5604. $('#store_drop_info').change(function () {
  5605. zdy_item_drop = $('#store_drop_info').val();
  5606. GM_setValue(roleid + "_zdy_item_drop", zdy_item_drop);
  5607. drop_list = zdy_item_drop.split(",");
  5608. });
  5609. $('#store_fenjie_info').change(function () {
  5610. zdy_item_fenjie = $('#store_fenjie_info').val();
  5611. GM_setValue(roleid + "_zdy_item_fenjie", zdy_item_fenjie);
  5612. fenjie_list = zdy_item_fenjie.split(",");
  5613. });
  5614. $('#auto_command').change(function () {
  5615. auto_command = $('#auto_command').val();
  5616. GM_setValue(roleid + "_auto_command", auto_command);
  5617. });
  5618. $('#blacklist').change(function () {
  5619. blacklist = $('#blacklist').val();
  5620. GM_setValue(roleid + "_blacklist", blacklist);
  5621. });
  5622. $('#welcome').focusout(function () {
  5623. welcome = $('#welcome').val();
  5624. GM_setValue(roleid + "_welcome", welcome);
  5625. });
  5626. $('#die_str').focusout(function () {
  5627. die_str = $('#die_str').val();
  5628. GM_setValue(roleid + "_die_str", die_str);
  5629. });
  5630.  
  5631. $('#shieldswitch').click(function () {
  5632.  
  5633. shieldswitch = WG.switchReversal($(this));
  5634. GM_setValue("_shieldswitch", shieldswitch);
  5635. if (shieldswitch == "开") {
  5636. messageAppend('已注入屏蔽系统', 0, 1);
  5637. }
  5638. });
  5639. $('#zdyskillsswitch').click(function () {
  5640.  
  5641. zdyskills = WG.switchReversal($(this));
  5642. GM_setValue(roleid + "_zdyskills", zdyskills);
  5643. if (zdyskills == "开") {
  5644. messageAppend('已开启自定义技能顺序,填写顺序后,请刷新游戏生效', 0, 1);
  5645. }
  5646. });
  5647.  
  5648. $('#zdyskilllist').change(function () {
  5649.  
  5650. let x = JSON.parse($("#zdyskilllist").val());
  5651. if (!typeof x instanceof Array) {
  5652. alert("无效的输入")
  5653. return false;
  5654. } else {
  5655. zdyskilllist = $("#zdyskilllist").val();
  5656. GM_setValue(roleid + "_zdyskilllist", zdyskilllist);
  5657. }
  5658. });
  5659. $('#silence').click(function () {
  5660.  
  5661. silence = WG.switchReversal($(this));
  5662. GM_setValue(roleid + "_silence", silence);
  5663. if (silence == "开") {
  5664. messageAppend('已开启安静模式', 0, 1);
  5665. }
  5666. });
  5667. $('#dpssakada').click(function () {
  5668.  
  5669. dpssakada = WG.switchReversal($(this));
  5670. GM_setValue(roleid + "_dpssakada", dpssakada);
  5671. if (dpssakada == "开") {
  5672. messageAppend('已开启战斗统计', 0, 1);
  5673. }
  5674. });
  5675. $('#funnycalc').click(function () {
  5676.  
  5677. funnycalc = WG.switchReversal($(this));
  5678. GM_setValue(roleid + "_funnycalc", funnycalc);
  5679. if (funnycalc == "开") {
  5680. messageAppend('已开启FUNNY计算', 0, 1);
  5681. }
  5682. });
  5683. $('#shield').focusout(function () {
  5684. shield = $('#shield').val();
  5685. GM_setValue("_shield", shield);
  5686. });
  5687. $('#shieldkey').focusout(function () {
  5688. shieldkey = $('#shieldkey').val();
  5689. GM_setValue("_shieldkey", shieldkey);
  5690. });
  5691.  
  5692. $('#statehml').change(function () {
  5693. statehml = $('#statehml').val();
  5694. GM_setValue(roleid + "_statehml", statehml);
  5695. });
  5696. $('#backimageurl').change(function () {
  5697. backimageurl = $('#backimageurl').val();
  5698. GM_setValue(roleid + "_backimageurl", backimageurl);
  5699. if (backimageurl != '') {
  5700. WG.SendCmd("setting backcolor none");
  5701. GM_addStyle(`body{
  5702. background-color:rgb(0,0,0,.25)
  5703. }
  5704. div{
  5705. opacity:1;
  5706. }
  5707. html{
  5708. background:rgba(255,255,255,0.25);
  5709. background-image:url('${backimageurl}');
  5710. background-repeat:no-repeat;
  5711. background-size:100% 100%;
  5712. -moz-background-size:100% 100%;
  5713. }
  5714. `);
  5715. }
  5716. });
  5717. $('#loginhml').change(function () {
  5718. loginhml = $('#loginhml').val();
  5719. GM_setValue(roleid + "_loginhml", loginhml);
  5720. });
  5721. $('#autobuy').change(function () {
  5722. auto_buylist = $('#autobuy').val();
  5723. GM_setValue(roleid + "_auto_buylist", auto_buylist);
  5724. });
  5725. $('#autoSkillPaperSell').change(function () {
  5726. auto_skillPaperSelllist = $('#autoSkillPaperSell').val();
  5727. GM_setValue(roleid + "_auto_skillPaperSelllist", auto_skillPaperSelllist);
  5728. });
  5729. $(".update_id_all").on("click", WG.update_id_all);
  5730. $(".clean_id_all").on("click", WG.clean_id_all);
  5731. $(".update_store").on("click", WG.update_store);
  5732. $('.backup_btn').on('click', WG.make_config);
  5733. $('.load_btn').on('click', WG.load_config);
  5734. $('.clean_dps').on('click', WG.clean_dps);
  5735.  
  5736. $('.clear_skillJson').on('click', () => {
  5737. zdyskilllist == "";
  5738. messageAppend("已关闭自定义,请刷新重新获取技能数据!");
  5739. zdyskills = "关";
  5740. GM_setValue(roleid + "_zdyskilllist", "");
  5741. GM_setValue(roleid + "_zdyskills", zdyskills);
  5742. });
  5743.  
  5744.  
  5745. $(".savebtn").on("click", function () {
  5746. let tmp = [];
  5747. for (let item of keyitem) {
  5748. let zdybtnitem = {
  5749. name: '无',
  5750. send: ''
  5751. };
  5752. let pname = $(`#name${item}`).val();
  5753. let psend = $(`#send${item}`).val();
  5754. if (pname != '') {
  5755. zdybtnitem.name = pname;
  5756. zdybtnitem.send = psend;
  5757. }
  5758.  
  5759. tmp.push(zdybtnitem);
  5760. }
  5761. zdy_btnlist = tmp;
  5762. GM_setValue(roleid + "_zdy_btnlist", zdy_btnlist);
  5763. messageAppend("保存自定义按钮成功");
  5764. WG.zdy_btnListInit();
  5765. });
  5766.  
  5767.  
  5768. $('#family').val(family);
  5769. $('#wudao_pfm').val(wudao_pfm);
  5770. $('#sm_loser').val(sm_loser);
  5771. $('#sm_any').val(sm_any);
  5772. $('#sm_price').val(sm_price);
  5773. $('#sm_getstore').val(sm_getstore);
  5774. $('#ks_pfm').val(ks_pfm);
  5775. $("#ks_wait").val(ks_wait);
  5776. $('#marry_kiss').val(automarry);
  5777. $('#ks_Boss').val(autoKsBoss);
  5778. $('#auto_eq').val(autoeq);
  5779. $('#autopfmswitch').val(auto_pfmswitch);
  5780. $('#autopfmmode').val(auto_pfm_mode);
  5781. $('#autorewardgoto').val(auto_rewardgoto);
  5782. $('#busyinfo').val(busy_info);
  5783. $('#saveAddr').val(saveAddr);
  5784. $('#autoupdateStore').val(auto_updateStore);
  5785. $('#autorelogin').val(auto_relogin);
  5786. $("#zmlshowsetting").val(zmlshowsetting);
  5787. $("#bagFull").val(bagFull);
  5788. $("#pushSwitch").val(pushSwitch);
  5789. $("#pushType").val(pushType);
  5790. $("#pushToken").val(pushToken);
  5791. // $("#pushUrl").val(pushUrl);
  5792.  
  5793. $("#color_select").val(color_select);
  5794. $('#getitemShow').val(getitemShow);
  5795. $('#unauto_pfm').val(unauto_pfm);
  5796. $('#store_info').val(zdy_item_store);
  5797. $('#store_info2').val(zdy_item_store2);
  5798.  
  5799. $('#lock_info').val(zdy_item_lock);
  5800. $('#store_drop_info').val(zdy_item_drop);
  5801. $('#store_fenjie_info').val(zdy_item_fenjie);
  5802. $('#auto_command').val(auto_command);
  5803. $("#blacklist").val(blacklist);
  5804. $('#welcome').val(welcome);
  5805. $('#die_str').val(die_str);
  5806. $('#shieldswitch').val(shieldswitch);
  5807. $('#silence').val(silence);
  5808. $('#dpssakada').val(dpssakada);
  5809. $('#funnycalc').val(funnycalc);
  5810. $('#shield').val(shield);
  5811. $('#shieldkey').val(shieldkey);
  5812. $('#statehml').val(statehml);
  5813. $("#backimageurl").val(backimageurl);
  5814. $("#loginhml").val(loginhml);
  5815. $("#autobuy").val(auto_buylist);
  5816. $("#autoSkillPaperSell").val(auto_skillPaperSelllist);
  5817.  
  5818. $("#zdyskillsswitch").val(zdyskills);
  5819. $("#zdyskilllist").val(zdyskilllist);
  5820. //自定义按钮刷新
  5821. var keyitem = ["Q", "W", "E", "R", "T", "Y"];
  5822. let zdybtni = 0;
  5823. for (let item of keyitem) {
  5824. $(`#name${item}`).val(zdy_btnlist[zdybtni].name);
  5825. $(`#send${item}`).val(zdy_btnlist[zdybtni].send);
  5826. zdybtni = zdybtni + 1;
  5827. }
  5828. for (let w = $(".setting>.setting-item2"), t = 0; t < w.length; t++) {
  5829. var s = $(w[t]),
  5830. i = s.attr("for");
  5831. if (i) {
  5832. var n = eval(i);
  5833. switch (i) {
  5834. default:
  5835. "开" == n && (s.find(".switch2").addClass("on"), s.find(".switch-text").html("开"))
  5836. }
  5837. }
  5838. }
  5839. },
  5840. zdybtnfunc: function (type) {
  5841. WG.SendCmd(zdy_btnlist[type].send);
  5842. },
  5843. zdy_btnset: function () {
  5844. zdy_btnlist = GM_getValue(roleid + "_zdy_btnlist", zdy_btnlist);
  5845. messageClear();
  5846. let html = UI.zdyBtnsetui();
  5847. messageAppend(html);
  5848. var keyitem = ["Q", "W", "E", "R", "T", "Y"];
  5849. let i = 0;
  5850. for (let item of keyitem) {
  5851. $(`#name${item}`).val(zdy_btnlist[i].name);
  5852. $(`#send${item}`).val(zdy_btnlist[i].send);
  5853. i = i + 1;
  5854. }
  5855. $(".savebtn").off('click');
  5856. $(".savebtn").on("click", function () {
  5857. let tmp = [];
  5858. for (let item of keyitem) {
  5859. let zdybtnitem = {
  5860. name: '无',
  5861. send: ''
  5862. };
  5863. let pname = $(`#name${item}`).val();
  5864. let psend = $(`#send${item}`).val();
  5865. if (pname != '') {
  5866. zdybtnitem.name = pname;
  5867. zdybtnitem.send = psend;
  5868. }
  5869.  
  5870. tmp.push(zdybtnitem);
  5871. }
  5872. zdy_btnlist = tmp;
  5873. GM_setValue(roleid + "_zdy_btnlist", zdy_btnlist);
  5874. messageAppend("保存成功");
  5875. WG.zdy_btnListInit();
  5876. });
  5877. },
  5878. zdy_btnListInit: function () {
  5879. zdy_btnlist = GM_getValue(roleid + "_zdy_btnlist", zdy_btnlist);
  5880. inzdy_btn = GM_getValue(roleid + "_inzdy_btn", inzdy_btn);
  5881. if (zdy_btnlist.length == 0) {
  5882. for (var i = 0; i < 6; i++) {
  5883. zdy_btnlist.push({
  5884. "name": "无",
  5885. "send": ""
  5886. });
  5887. }
  5888. GM_setValue(roleid + "_zdy_btnlist", zdy_btnlist);
  5889. }
  5890. if (inzdy_btn) {
  5891. WG.zdy_btnshow();
  5892. } else {
  5893. WG.zdy_btnshow('off');
  5894. }
  5895. },
  5896. zdy_btnshow: function (type = 'on') {
  5897. if (type == 'on') {
  5898. inzdy_btn = true;
  5899. var html = UI.zdybtnui();
  5900. $('.WG_button').remove();
  5901. $(".WG_log").after(html);
  5902. let keyitem = ["Q", "W", "E", "R", "T", "Y"];
  5903.  
  5904. for (let i = 0; i < keyitem.length; i++) {
  5905. $(`#keyin${keyitem[i]}`).on('click', function () {
  5906. WG.zdybtnfunc(i);
  5907. });
  5908. }
  5909. $(".auto_perform").on("click", WG.auto_preform_switch);
  5910. $(".cmd_echo").on("click", WG.cmd_echo_button);
  5911. } else if (type == 'off') {
  5912. inzdy_btn = false;
  5913.  
  5914. var html = UI.btnui();
  5915. $('.WG_button').remove();
  5916.  
  5917. $(".WG_log").after(html);
  5918. $(".sm_button").on("click", WG.sm_button);
  5919. $(".go_yamen_task").on("click", WG.go_yamen_task);
  5920. $(".kill_all").on("click", WG.kill_all);
  5921. $(".get_all").on("click", WG.get_all);
  5922. $(".sell_all").on("click", WG.sell_all);
  5923. $(".zdwk").on("click", WG.zdwk);
  5924. $(".auto_perform").on("click", WG.auto_preform_switch);
  5925. $(".cmd_echo").on("click", WG.cmd_echo_button);
  5926. if (G.isGod()) {
  5927. $('.zdy-item.zdwk').html("修炼(Y)");
  5928. }
  5929. }
  5930.  
  5931. GM_setValue(roleid + "_inzdy_btn", inzdy_btn);
  5932. },
  5933. runLoginhml: function () {
  5934. WG.SendCmd(loginhml);
  5935. },
  5936. tnBuy_hook: null,
  5937. tnBuy: function () {
  5938. WG.tnBuy_hook = WG.add_hook(["dialog", "text"], (data) => {
  5939. let _seller;
  5940. let _itemids = new Map();
  5941. let _sendcmd = ""
  5942. if (data.type == 'dialog' && data.title != null && data.title.indexOf("唐楠正在贩卖") >= 0) {
  5943. _seller = data.seller;
  5944. for (let item of data.selllist) {
  5945. if (WG.inArray(item.name, auto_buylist.split(","))) {
  5946. _itemids.set(item.id, item.count);
  5947. }
  5948. }
  5949. _itemids.forEach((val, key, map) => {
  5950. _sendcmd = _sendcmd + "buy " + val + " " + key + " from " + _seller + ";";
  5951. _sendcmd = _sendcmd + "$wait 500;";
  5952. });
  5953. _sendcmd = _sendcmd + "look3 1;"
  5954. WG.SendCmd(_sendcmd);
  5955. }
  5956. if (data.type == "text" && data.msg.indexOf("没有这个玩家") >= 0) {
  5957. messageAppend("执行结束");
  5958. $(".dialog-close").click();
  5959. WG.remove_hook(WG.tnBuy_hook);
  5960. }
  5961.  
  5962. });
  5963.  
  5964. WG.SendCmd("$to 扬州城-广场;$wait 100;$to 扬州城-当铺;$wait 200;list %唐楠%");
  5965.  
  5966. },
  5967. zxBuy_hook: null,
  5968. zxBuy: function () {
  5969. WG.zxBuy_hook = WG.add_hook(["dialog", "text"], (data) => {
  5970. let _seller = WG.getIdByName("朱熹")
  5971. let _itemids = new Map();
  5972. let _sendcmd = ""
  5973. if (data.type == 'dialog' && data.dialog == 'pack') {
  5974.  
  5975. for (let item of data.items) {
  5976. if (WG.inArray(item.name.toLowerCase(), auto_skillPaperSelllist.split(","))) {
  5977. _itemids.set(item.id, item.count);
  5978. }
  5979. }
  5980. _itemids.forEach((val, key, map) => {
  5981. _sendcmd = _sendcmd + "sell " + val + " " + key + " to " + _seller + ";";
  5982. _sendcmd = _sendcmd + "$wait 500;";
  5983. });
  5984. _sendcmd = _sendcmd + "look3 1;"
  5985. WG.SendCmd(_sendcmd);
  5986. }
  5987. if (data.type == "text" && data.msg.indexOf("没有这个玩家") >= 0) {
  5988. //messageAppend("执行结束");
  5989. $(".dialog-close").click();
  5990. WG.remove_hook(WG.zxBuy_hook);
  5991. }
  5992.  
  5993. });
  5994.  
  5995. WG.SendCmd("$to 扬州城-广场;go east;go north;$wait 100;$wait 200;pack");
  5996.  
  5997. },
  5998. selectLowKongfu: function (n = 0) {
  5999.  
  6000. WG.gpSkill_hook = WG.add_hook("dialog", (data) => {
  6001. if ((data.dialog && data.dialog == 'skills') && data.items && data.items != null) {
  6002.  
  6003. var lianxiCodeStart = "jh fam 0 start,go west,go west,go north,go enter,go west,";
  6004. var lianxiCode = "";
  6005. var lianxiCodeMin = "";
  6006. var lianxiCodeEnd = "wakuang";
  6007. if (G.isGod()) {
  6008. lianxiCodeEnd = "xiulian";
  6009. }
  6010. var __skillNameList = [];
  6011. var __skillMinNameList = [];
  6012.  
  6013. var maxSkill = n;
  6014. if (n == 0 || isNaN(n)) {
  6015. maxSkill = data.limit;
  6016. }
  6017. var nowCount = 0;
  6018. var __enaSkill = [];
  6019. for (let item of data.items) {
  6020. if (nowCount > 5) {
  6021. break;
  6022. }
  6023. if (item.enable_skill) {
  6024. __enaSkill.push(item.enable_skill);
  6025. }
  6026.  
  6027.  
  6028. if (WG.inArray(item.id, __enaSkill) || item.name.indexOf("基本") >= 0) {
  6029. if (parseInt(item.level) < parseInt(maxSkill)) {
  6030. lianxiCode = lianxiCode + `lianxi ${item.id} ${maxSkill},`
  6031. if (nowCount < 4) {
  6032. lianxiCodeMin = lianxiCodeMin + `lianxi ${item.id} ${maxSkill},`
  6033. __skillMinNameList.push(item.name);
  6034. }
  6035. __skillNameList.push(item.name);
  6036. nowCount++;
  6037. }
  6038. }
  6039.  
  6040. }
  6041. var __code = `setting auto_work ${lianxiCodeStart}${lianxiCode}${lianxiCodeEnd}`
  6042. if (__code.length <= 200) {
  6043. WG.Send(`setting auto_work ${lianxiCodeStart}${lianxiCode}${lianxiCodeEnd}`);
  6044. messageAppend(`添加` + __skillNameList.join(",") + `到${maxSkill}`);
  6045. } else {
  6046. WG.Send(`setting auto_work ${lianxiCodeStart}${lianxiCodeMin}${lianxiCodeEnd}`);
  6047. messageAppend(`添加` + __skillMinNameList.join(",") + `到${maxSkill}`);
  6048. }
  6049. messageAppend("添加成功,数据刷新后显示");
  6050.  
  6051. WG.remove_hook(WG.gpSkill_hook);
  6052. WG.gpSkill_hook = undefined;
  6053. }
  6054. });
  6055. KEY.do_command("skills");
  6056. KEY.do_command("skills");
  6057. WG.Send("cha");
  6058. },
  6059. hooks: [],
  6060. hook_index: 0,
  6061. add_hook: function (types, fn) {
  6062. var hook = {
  6063. 'index': WG.hook_index++,
  6064. 'types': types,
  6065. 'fn': fn
  6066. };
  6067. WG.hooks.push(hook);
  6068. return hook.index;
  6069. },
  6070. remove_hook: function (hookindex) {
  6071. var that = this;
  6072. for (var i = 0; i < that.hooks.length; i++) {
  6073. if (that.hooks[i].index == hookindex) {
  6074. that.hooks.baoremove(i);
  6075. }
  6076. }
  6077. },
  6078. run_hook: function (type, data) {
  6079. //console.log(data);
  6080. for (var i = 0; i < this.hooks.length; i++) {
  6081. // if (this.hooks[i] !== undefined && this.hooks[i].type == type) {
  6082. // this.hooks[i].fn(data);
  6083. // }
  6084. try {
  6085. var listener = this.hooks[i];
  6086. if (listener.types == data.type || (listener.types instanceof Array && $
  6087. .inArray(data.type, listener.types) >= 0)) {
  6088. listener.fn(data);
  6089. }
  6090. }
  6091. catch (e) {
  6092. console.error('hook error', e);
  6093. }
  6094. }
  6095. },
  6096. receive_message: function (msg) {
  6097. if (!msg || !msg.data) return;
  6098. var data;
  6099. var deepCopy = function (source) {
  6100. var result = {};
  6101. for (var key in source) {
  6102. result[key] = typeof source[key] === 'object' ? deepCopy(source[key]) : source[key];
  6103. }
  6104. return result;
  6105. }
  6106. if (msg.data[0] == '{' || msg.data[0] == '[') {
  6107. var func = new Function("return " + msg.data + ";");
  6108. data = func();
  6109. } else {
  6110. data = {
  6111. type: 'text',
  6112. msg: msg.data
  6113. };
  6114. }
  6115. if (G.cmd_echo && data.type != 'time') {
  6116. console.log(data);
  6117. }
  6118. if (G.yaotaFlag && typeof (data.msg) == 'string') {
  6119. let ytdata = data.msg;
  6120. if (ytdata.indexOf("一股奇异的能量涌入你的体内,你获得") >= 0) {
  6121. G.yaoyuan = G.yaoyuan + parseInt(ytdata.replace(/[^0-9]/ig, ""))
  6122. $('#yt_prog').html("<hiy>目前已获得 " + G.yaoyuan + " 妖元</hiy>")
  6123. if (G.yaoyuan == 261) {
  6124. $('#yt_prog').html("<hiy>目前已获得 " + G.yaoyuan + " 妖元,boss出现!</hiy>")
  6125. }
  6126. }
  6127. }
  6128. if (silence == "开") {
  6129. if (data.type == 'state') {
  6130. if (data.silence == undefined) {
  6131. if (data.desc != []) {
  6132. data.desc = [];
  6133. data.silence = 1;
  6134. let p = deepCopy(msg);
  6135. p.data = JSON.stringify(data);
  6136. WG.run_hook(data.type, data);
  6137. ws_on_message.apply(this, [p]);
  6138. return;
  6139. }
  6140. }
  6141. }
  6142. if (data.type == 'text') {
  6143. let pdata = data.msg;
  6144. let a = pdata.split(/.*造成<wht>|.*造成<hir>|<\/wht>点|<\/hir>点/);
  6145. if (a[2]) {
  6146. let b = a[2].split(/伤害|\(|</);
  6147. messageAppend(`造成<wht>${a[1]}</wht>点<hir>${b[0]}</hir>伤害!`, 0, 1);
  6148. WG.run_hook(data.type, data);
  6149. return;
  6150. }
  6151. }
  6152. }
  6153. if (data.type == 'msg') {
  6154. if (shieldswitch == '开') {
  6155. if (shield != undefined &&
  6156. (shield.indexOf(data.name) >= 0 ||
  6157. shield.indexOf(data.uid) >= 0))
  6158. return;
  6159. var skey = shieldkey.split(",");
  6160. for (let keyword of skey) {
  6161. if (keyword != "" && data.content.indexOf(keyword) >= 0) {
  6162. return;
  6163. }
  6164. }
  6165. }
  6166. }
  6167. if (data.type == 'text') {
  6168. if (shieldswitch == '开') {
  6169.  
  6170. var skey = shieldkey.split(",");
  6171. for (let keyword of skey) {
  6172. if (keyword != "" && data.msg.indexOf(keyword) >= 0) {
  6173. return;
  6174. }
  6175. }
  6176. }
  6177. }
  6178.  
  6179. if (data.type == 'dialog' && data.t == 'fam' && data.k == undefined) {
  6180. if (UI.toui[data.index] != undefined) {
  6181. data.desc += "\n";
  6182. data.desc += UI.toui[data.index];
  6183. data.k = 'knva';
  6184. let p = deepCopy(msg);
  6185. p.data = JSON.stringify(data);
  6186. WG.run_hook(data.type, data);
  6187. ws_on_message.apply(this, [p]);
  6188. return;
  6189. }
  6190. }
  6191.  
  6192. if (data.type == 'text' && data.msg == '什么?' && G.wsdelaySetTime != undefined) {
  6193. if (G.wsdelaySetCount <= 3) {
  6194. G.wsdelaySetCount += 1;
  6195. if (G.wsdelay == undefined) {
  6196. G.wsdelay = new Date().getTime() - G.wsdelaySetTime;
  6197. } else {
  6198. G.wsdelay = (new Date().getTime() - G.wsdelaySetTime + G.wsdelay) / 2
  6199. }
  6200. G.wsdelaySetTime = new Date().getTime()
  6201. WG.SendCmd("test")
  6202. } else {
  6203.  
  6204. G.wsdelay = (new Date().getTime() - G.wsdelaySetTime + G.wsdelay) / 2
  6205. WG.SendCmd("tm 服务器到本地来回延迟约 " + G.wsdelay + " 毫秒")
  6206. G.wsdelaySetTime = undefined;
  6207. G.wsdelaySetCount = undefined;
  6208. setTimeout(() => {
  6209. let content = $(".content-message pre").html();
  6210. content = content.replaceAll('什么?\n', '');
  6211. $(".content-message pre").html(content);
  6212. }, 10);
  6213. }
  6214. }
  6215.  
  6216. if (data.type == 'dialog' && data.t == 'fb' && data.k == undefined) {
  6217. data.desc += "\n";
  6218. data.desc += UI.fbui(fb_path[data.index], data.is_multi, data.is_diffi)
  6219. data.k = 'knva';
  6220. let p = deepCopy(msg);
  6221. p.data = JSON.stringify(data);
  6222. WG.run_hook(data.type, data);
  6223. ws_on_message.apply(this, [p]);
  6224. return;
  6225. }
  6226. if (data.type == 'dialog' && data.dialog == 'pack' && data.from == 'item' && data.k == undefined) {
  6227. let itemname = data.desc.split("\n")[0];
  6228. data.desc += "\n";
  6229. data.desc += UI.itemui(itemname);
  6230. data.k = 'knva';
  6231. let p = deepCopy(msg);
  6232. p.data = JSON.stringify(data);
  6233. WG.run_hook(data.type, data);
  6234. ws_on_message.apply(this, [p]);
  6235. return;
  6236. }
  6237. if (data.type == "perform") {
  6238. if (zdyskills == "开") {
  6239. zdyskilllist = GM_getValue(roleid + "_zdyskilllist", zdyskilllist);
  6240. data.skills = JSON.parse(zdyskilllist);
  6241. let p = deepCopy(msg);
  6242. p.data = JSON.stringify(data);
  6243. WG.run_hook(data.type, data);
  6244. ws_on_message.apply(this, [p]);
  6245. return;
  6246. }
  6247. }
  6248. if (data.type == 'cmds') {
  6249. if (unsafeWindow && unsafeWindow.ToRaid) {
  6250. if (JSON.stringify(data.items).indexOf('进入副本') >= 0) {
  6251. let cr_path = data.items[0].cmd
  6252. let sd_path = ''
  6253. if (cr_path.indexOf("1 0") >= 0) {
  6254. sd_path = cr_path.replaceAll('1 0', '1')
  6255. } else {
  6256. sd_path = cr_path + " 0"
  6257. }
  6258. let cp = {}
  6259. cp.name = '扫荡指定次数';
  6260. cp.cmd = `@js ($sdnum) =prompt("请输入次数,注意:若副本掉落物品过多,请不要输入超过50次,否则可能号没了","10")
  6261. [if] (sdnum)!=null
  6262. ${sd_path} (sdnum)`;
  6263. data.items.push(cp);
  6264. let toudu = {}
  6265. toudu.name = '偷渡指定次数';
  6266. toudu.cmd = `@js ($sdnum) =prompt("请输入次数","10")
  6267. [if] (sdnum)!=null
  6268. [while] (sdnum) !=0
  6269. ($sdnum) = (sdnum)-1
  6270. ${cr_path}
  6271. cr over`;
  6272. data.items.push(toudu);
  6273. let p = deepCopy(msg);
  6274. p.data = JSON.stringify(data);
  6275. WG.run_hook(data.type, data);
  6276. ws_on_message.apply(this, [p]);
  6277. return;
  6278. }
  6279. }
  6280. }
  6281. //任务进度 -- fork from Suqing funny
  6282. if (data.type == 'dialog' && data.dialog == 'tasks' && data.items) {
  6283. let jl, fb, qa, wd, wd1, wd2, wd3, xy, mpb, boss, wdtz, syt, ys, sm1, sm2, ym1, ym2, yb1, yb2;
  6284. data.items.forEach(task => {
  6285. if (task.state === 2) WG.SendCmd(`taskover ${task.id}`);//自动完成
  6286. if (task.id === 'signin') {
  6287. //精力消耗
  6288. const a = task.desc.match(/精力消耗:<...>(\d+)\/200<....>/);
  6289. if (a) {
  6290. jl = parseInt(a[1]) < 200 ? `<hig>${a[1]}</hig>` : a[1];
  6291. }
  6292. //武道塔进度
  6293. const b = task.desc.match(/武道塔(.+),进度(\d+)\/(\d+)<....>/);
  6294. if (b) {
  6295. wd1 = b[2];
  6296. wd2 = b[3];
  6297. if (wd1 < wd2) wd1 = `<hig>${wd1}</hig>`;
  6298. /可以重置/.test(b[1]) ? wd3 = "<hig>可以重置</hig>" : wd3 = "已经重置";
  6299. wd = wd1 + "/" + wd2 + " " + wd3
  6300. } else { wd = "只打塔主" }
  6301. //首席请安
  6302. const c = task.desc.match(/<.+?>(.+)首席请安<.+?>/);
  6303. if (c) {
  6304. /已经/.test(c[1]) ? qa = "已经请安" : qa = "<hig>尚未请安</hig>";
  6305. } else { qa = "无需请安" }
  6306. //今日副本次数
  6307. const d = task.desc.match(/今日副本完成次数:(\d+)。/);
  6308. if (d) {
  6309. fb = d[1];
  6310. }
  6311. //襄阳
  6312. const e = task.desc.match(/尚未协助襄阳守城/);
  6313. (e) ? xy = `<hig>0</hig>` : xy = 1;
  6314. //门派BOSS
  6315. const f = task.desc.match(/尚未挑战门派BOSS/);
  6316. (f) ? mpb = `<hig>0</hig>` : mpb = 1;
  6317. //武神BOSS
  6318. const g = task.desc.match(/挑战(\d+)次武神BOSS/);
  6319. if (g) {
  6320. boss = 5 - parseInt(g[1]);
  6321. boss = `<hig>${boss}</hig>`;
  6322. } else {
  6323. if (G.level && /武神|剑神|刀皇|兵主|战神/.test(G.level)) boss = 5;
  6324. }
  6325. //武道塔主
  6326. const h = task.desc.match(/尚未挑战武道塔塔主/);
  6327. (h) ? wdtz = `<hig>0</hig>/1` : wdtz = `已打或未解锁`;
  6328. //妖塔
  6329. const i = task.desc.match(/挑战弑妖塔(\d+)\/50/);
  6330. if (i) {
  6331. syt = i[1];
  6332. }
  6333. //妖神
  6334. const j = task.desc.match(/尚未挑战妖神/);
  6335. (j) ? ys = `<hig>0</hig>/1` : ys = `已打或未解锁`;
  6336. } else if (task.id === 'sm') {
  6337. //师门任务
  6338. let a = task.desc.match(/目前完成(.*)\/20个,共连续完成(.*)个。/);
  6339. (parseInt(a[1]) < 20) ? sm1 = `<hig>${a[1]}</hig>` : sm1 = a[1];
  6340. sm2 = a[2];
  6341. } else if (task.id === 'yamen') {
  6342. //追捕
  6343. let a = task.desc.match(/目前完成(.*)\/20个,共连续完成(.*)个。/);
  6344. (parseInt(a[1]) < 20) ? ym1 = `<hig>${a[1]}</hig>` : ym1 = a[1];
  6345. ym2 = a[2];
  6346. } else if (task.id === 'yunbiao') {
  6347. //运镖
  6348. let a = task.desc.match(/本周完成(.*)\/20个,共连续完成(.*)个。/);
  6349. (parseInt(a[1]) < 20) ? yb1 = `<hig>${a[1]}</hig>` : yb1 = a[1];
  6350. yb2 = a[2];
  6351. }
  6352. });
  6353. //合并生成进度数据
  6354. let taskprog = `门派请安 => ${qa}\n武道之塔 => ${wd}\n`;
  6355. taskprog += `精力消耗 => ${jl}/200 副本次数 => ${fb}次\n师门任务 => ${sm1}/20 ${sm2}连\n`;
  6356. taskprog += `衙门追捕 => ${ym1}/20 ${ym2}连\n每周运镖 => ${yb1}/20 ${yb2}连\n`;
  6357. taskprog += `襄阳守城 => ${xy}/1 门派BOSS => ${mpb}/1\n`;
  6358. taskprog += `武道塔主 => ${wdtz}\n`;
  6359. if (boss) taskprog += `武神BOSS => ${boss}/5\n`;
  6360. if (syt) taskprog += `挑战弑妖塔 => ${syt}/50 挑战妖神 => ${ys}\n`;
  6361. $(".remove_taskprog").remove();
  6362. $(".content-message pre").append(`<span class="remove_taskprog">${taskprog}</span>`);
  6363. AutoScroll(".content-message");
  6364. }
  6365. //按指定顺序排序背包 -- fork from Suqing funny
  6366. let ITEMS = [
  6367. "师门补给包", "背包扩充石", "小箱子", "随从礼包",
  6368. "神魂碎片", "武道</hio>", "武道残页", "元晶", "帝魄碎片", "ord", "hir",
  6369. "玄晶", "养精丹</hig>", "养精丹", "培元丹", "玫瑰花",
  6370. "扫荡符", "天师符", "叛师符", "洗髓丹", "<hig>喜宴", "<hic>喜宴", "<hiy>喜宴",
  6371. "师门令牌</hig>", "师门令牌</hic>", "师门令牌</hiy>", "师门令牌</HIZ>", "师门令牌</hio>",//师门令牌排序
  6372. "碎裂的红宝石", "碎裂的绿宝石", "碎裂的蓝宝石", "碎裂的黄宝石",//宝石排序
  6373. "红宝石</hic>", "绿宝石</hic>", "蓝宝石</hic>", "黄宝石</hic>",
  6374. "精致的红宝石", "精致的绿宝石", "精致的蓝宝石", "精致的黄宝石",
  6375. "完美的红宝石", "完美的绿宝石", "完美的蓝宝石", "完美的黄宝石",
  6376. "聚气丹</hig>", "聚气丹</hic>", "聚气丹</hiy>", "聚气丹</HIZ>", "聚气丹</hio>",//聚气丹排序
  6377. "突破丹</hig>", "突破丹</hic>", "突破丹</hiy>", "突破丹</hiz>", "突破丹</hio>",//突破丹排序
  6378. "残页</hio>", "残页</HIZ>", "残页</hiy>", "残页</hic>", "残页</hig>",//残页排序
  6379. "鲤鱼", "草鱼", "鲢鱼", "鲮鱼", "鳊鱼", "鲂鱼", "黄金鳉", "黄颡鱼", "太湖银鱼", "虹鳟", "孔雀鱼", "反天刀",//鱼排序
  6380. "银龙鱼", "黑龙鱼", "罗汉鱼", "巨骨舌鱼", "七星刀鱼", "帝王老虎魟",
  6381. "当归", "芦荟", "山楂叶", "柴胡", "金银花", "石楠叶", "茯苓", "沉香", "熟地黄", "九香虫", "络石藤", "冬虫夏草",//药材排序
  6382. "人参", "何首乌", "凌霄花", "灵芝", "天仙藤", "盘龙参",
  6383. "秘籍</wht>", "秘籍",
  6384. "四十二章经一", "四十二章经二", "四十二章经三", "四十二章经四", "四十二章经五", "四十二章经六", "四十二章经七", "四十二章经八",
  6385. ];
  6386. if (data.type == 'dialog' && data.dialog == 'pack') {
  6387. //生成快速使用按钮 -- fork from Suqing funny
  6388. function autoUse(item) {
  6389. if (/养精丹|朱果|潜灵果|背包扩充石|小箱子|师门补给包|随从礼包|技能重置包/.test(item.name)) {
  6390. let cmd = ["stopstate"];
  6391. let count = item.count;
  6392. let zl = "use";
  6393. if (/小箱子|师门补给包|随从礼包|技能重置包/.test(item.name)) zl = "open";
  6394. for (let i = 0; i < count; i++) {
  6395. cmd.push(`$wait 250;${zl} ${item.id}`);
  6396. }
  6397. $(".content-message pre").append(
  6398. $(`<div class="item-commands"><span class="autouse">使用 ${item.name} ${count}次</span></div>`).click(() => WG.SendCmd(cmd)),
  6399. );
  6400. AutoScroll(".content-message");
  6401. }
  6402. }
  6403. //获得物品后检测生成快速使用按钮 -- fork from Suqing funny
  6404. if (data.name) {
  6405. autoUse(data);
  6406. }
  6407. //按指定顺序排序 -- fork from Suqing funny
  6408. // if (data.items) {
  6409. // let pack_items = [];
  6410. // ITEMS.forEach(name => {
  6411. // for (let i =0; i < data.items.length; i++) {
  6412. // let item = data.items[i];
  6413. // if (item !==0 && item.name.includes(name)) {
  6414. // pack_items.push(data.items[i]);
  6415. // data.items[i] = 0;
  6416. // }
  6417. // }
  6418. // });
  6419. // data.items.forEach(item => {
  6420. // if (item !== 0) pack_items.push(item);
  6421. // });
  6422. // pack_items.forEach(item => autoUse(item));
  6423. // data.type = "dialog";
  6424. // //data.dialog = "pack";
  6425. // data.items = pack_items;
  6426. // let p = deepCopy(msg);
  6427. // p.data = JSON.stringify(data);
  6428. // WG.run_hook(data.type, data);
  6429. // ws_on_message.apply(this, [p]);
  6430. // return;
  6431. // }
  6432. }
  6433. if (data.type == 'room') {
  6434. if (!(/桃花岛|慈航静斋/).test(data.name)) {
  6435. //精简房间描述、生成功能按钮 -- fork from Suqing funny
  6436. let room_desc = data.desc;
  6437. if (room_desc.length > 30) {
  6438. let desc0 = room_desc.replace(/<([^<]+)>/g, "");
  6439. let desc1 = desc0.substr(0, 30);
  6440. let desc2 = desc0.substr(30);
  6441. data.desc = `<span id="show">${desc1} <hic>»»»</hic></span><span id="more" style="display:none">${desc0}</span><span id="hide" style="display:none"> <hiy>«««</hiy></span>`
  6442. //data.desc = `${desc1}<span id="show"> <hic>»»»</hic></span><span id="more" style="display:none">${desc2}</span><span id="hide" style="display:none"> <hiy>«««</hiy></span>`;
  6443. }
  6444. if (room_desc.includes("cmd")) {
  6445. room_desc = room_desc.replace("<hig>椅子</hig>", "椅子");//新手教程的椅子
  6446. room_desc = room_desc.replace("<CMD cmd='look men'>门(men)<CMD>", "<cmd cmd='look men'>门</cmd>");//兵营副本的门
  6447. room_desc = room_desc.replace(/span/g, "cmd"); //古墓里的画和古琴是<span>标签
  6448. room_desc = room_desc.replace(/"/g, "'"); // "" => ''
  6449. room_desc = room_desc.replace(/\((.*?)\)/g, "");//去除括号和里面的英文单词
  6450. //console.log(room_desc);
  6451. let cmds = room_desc.match(/<cmd cmd='([^']+)'>([^<]+)<\/cmd>/g);
  6452. //console.log(cmds);
  6453. cmds.forEach(cmd => {
  6454. let x = cmd.match(/<cmd cmd='(.*)'>(.*)<\/cmd>/);
  6455. data.commands.unshift({ cmd: x[1], name: `<hic>${x[2]}</hic>` });
  6456. });
  6457. // room_desc = room_desc.replace(/<([^<]+)>/g, "");
  6458. cmds.forEach(desc => data.desc = `<hic>${desc}</hic> ${data.desc}`);
  6459. }
  6460. let p = deepCopy(msg);
  6461. p.data = JSON.stringify(data);
  6462. WG.run_hook(data.type, data);
  6463. ws_on_message.apply(this, [p]);
  6464. $("#show").click(() => { $("#more").show(); $("#show").hide(); $("#hide").show(); });
  6465. $("#hide").click(() => { $("#more").hide(); $("#show").show(); $("#hide").hide(); });
  6466. return;
  6467. }
  6468. }
  6469.  
  6470. WG.run_hook(data.type, data);
  6471.  
  6472. ws_on_message.apply(this, arguments);
  6473.  
  6474. if (unsafeWindow.funny) {
  6475. if (unsafeWindow.funny.API != null) { unsafeWindow.funny.API.onmessage(msg); }
  6476. }
  6477. },
  6478.  
  6479. };
  6480. //助手函数
  6481. var T = {
  6482. //private
  6483. _recmd: function (cmds) {
  6484. if (cmds) {
  6485. cmds = cmds instanceof Array ? cmds : cmds.split(';');
  6486. cmds.baoremove(0);
  6487. cmds = cmds.join(";");
  6488. return cmds;
  6489. } else {
  6490. return "";
  6491. }
  6492. },
  6493. recmd: function (idx, cmds) {
  6494. for (let i = 0; i < idx + 1; i++) {
  6495. cmds = T._recmd(cmds);
  6496. }
  6497. return cmds;
  6498. },
  6499. findhook: undefined,
  6500. _findItem: async function (itemname, callback) {
  6501. console.log("finditem" + itemname);
  6502. T.findhook = WG.add_hook("dialog", async function (data) {
  6503. if (data.items) {
  6504. for (let item of data.items) {
  6505. if (item.name == itemname) {
  6506. callback(item.id);
  6507. WG.remove_hook(T.findhook);
  6508. }
  6509. }
  6510. callback("");
  6511. }
  6512. WG.remove_hook(T.findhook);
  6513. });
  6514.  
  6515. WG.Send("pack");
  6516. },
  6517. //public
  6518. pname: function (idx = 0, n, cmds) {
  6519. T.findPlayerByName(idx, n, cmds);
  6520. },
  6521. findPlayerByName: function (idx = 0, n, cmds) {
  6522. cmds = T.recmd(idx - 1, cmds);
  6523. if (cmds.indexOf(",") >= 0) {
  6524. cmds = cmds.split(",");
  6525. } else {
  6526. cmds = cmds.split(";");
  6527. }
  6528. let p = cmds[0].split("$")[0];
  6529. cmds = T.recmd(0, cmds);
  6530. p = p.replaceAll("-", " ");
  6531. if (p[p.length - 1] == " ") {
  6532.  
  6533. p = p.substring(0, p.length - 1)
  6534. }
  6535. console.log("findPlayerByName" + n);
  6536.  
  6537. for (let i = 0; i < roomData.length; i++) {
  6538. if (roomData[i].name && roomData[i].name.indexOf(n) >= 0) {
  6539. WG.Send(p + " " + roomData[i].id);
  6540. }
  6541. }
  6542. WG.SendCmd(cmds);
  6543. },
  6544. findItem: async function (idx = 0, n, cmds) {
  6545. cmds = T.recmd(idx - 1, cmds);
  6546. if (cmds.indexOf(",") >= 0) {
  6547. cmds = cmds.split(",");
  6548. } else {
  6549. cmds = cmds.split(";");
  6550. }
  6551. let p = cmds[0].split(" ")[0];
  6552. cmds = T.recmd(0, cmds);
  6553. console.log("finditem" + n);
  6554.  
  6555. WG.Send("pack");
  6556. // console.log(packData)
  6557. for (let item of packData) {
  6558. if (item.name == n) {
  6559. if (p == "fenjie" || p == "drop") {
  6560. if (item.name.indexOf("★") >= 0) {
  6561. messageAppend("高级物品 ,不分解");
  6562. continue;
  6563. }
  6564. }
  6565. WG.SendCmd(p + " " + item.id);
  6566. }
  6567. }
  6568.  
  6569. WG.SendCmd(cmds);
  6570. },
  6571. wait: async function (idx = 0, n, cmds) {
  6572. cmds = T.recmd(idx, cmds);
  6573. console.log("延时:" + n + "ms,延时触发:" + cmds);
  6574. await WG.sleep(parseInt(n));
  6575. WG.SendCmd(cmds);
  6576. },
  6577. batwait: async function (idx = 0, n, cmds) {
  6578. if (G.in_fight) {
  6579. cmds = T.recmd(idx, cmds);
  6580. console.log("延时:" + n + "ms,延时触发:" + cmds);
  6581. await WG.sleep(parseInt(n));
  6582. WG.SendCmd(cmds);
  6583. }
  6584. },
  6585. goyt: async function () {
  6586. WG.SendCmd("jh fam 9 start;go enter;go up;")
  6587. await WG.sleep(1000);
  6588. var ltId = "";
  6589. for (let i = 0; i < roomData.length; i++) {
  6590. if (roomData[i].name && roomData[i].name.indexOf("疯癫的老头") >= 0) {
  6591. ltId = roomData[i].id
  6592. }
  6593. }
  6594. WG.SendCmd("ggdl " + ltId + ";go north;go north;go north;go north;$wait 250;go north;go north;look shi;tiao1 shi;tiao3 shi;$wait 250;tiao1 shi;tiao3 shi;tiao2 shi;go north;")
  6595. },
  6596. gogzm: async function () {
  6597. WG.SendCmd("jh fam 9 start;go enter;go up;")
  6598. await WG.sleep(1000);
  6599. var ltId = "";
  6600. for (let i = 0; i < roomData.length; i++) {
  6601. if (roomData[i].name && roomData[i].name.indexOf("疯癫的老头") >= 0) {
  6602. ltId = roomData[i].id
  6603. }
  6604. }
  6605. WG.SendCmd("ggdl " + ltId + ";go north;go north;go north;go north;$wait 250;go north;go north;$wait 250;look shi;tiao1 shi;tiao1 shi;tiao2 shi;$wait 250;jumpdown;")
  6606. },
  6607. godddb: async function () {
  6608. WG.SendCmd("jh fam 9 start;go enter;go up;")
  6609. await WG.sleep(1000);
  6610. var ltId = "";
  6611. for (let i = 0; i < roomData.length; i++) {
  6612. if (roomData[i].name && roomData[i].name.indexOf("疯癫的老头") >= 0) {
  6613. ltId = roomData[i].id
  6614. }
  6615. }
  6616. WG.SendCmd("ggdl " + ltId + ";go north;go north;go north;go north;$wait 250;go north;go down;")
  6617. },
  6618. killall: async function (idx = 0, n = null, cmds) {
  6619. cmds = T.recmd(idx, cmds);
  6620. console.log("叫杀");
  6621. WG.kill_all();
  6622. await WG.sleep(100);
  6623. WG.SendCmd(cmds);
  6624. },
  6625. getall: async function (idx = 0, n = null, cmds) {
  6626. cmds = T.recmd(idx, cmds);
  6627. console.log("拾取");
  6628. WG.get_all();
  6629. await WG.sleep(100);
  6630. WG.SendCmd(cmds);
  6631. },
  6632. cleanall: async function (idx = 0, n = null, cmds) {
  6633. cmds = T.recmd(idx, cmds);
  6634. console.log("清包");
  6635. WG.clean_all();
  6636. await WG.sleep(100);
  6637. WG.SendCmd(cmds);
  6638. },
  6639. to: async function (idx = 0, n, cmds) {
  6640. cmds = T.recmd(idx, cmds);
  6641. WG.go(n);
  6642. await WG.sleep(100);
  6643. WG.SendCmd(cmds);
  6644. },
  6645. eq: async function (idx = 0, n, cmds) {
  6646. cmds = T.recmd(idx, cmds);
  6647. if (n == "0") {
  6648. WG.uneqall();
  6649. } else {
  6650. WG.eqhelper(n);
  6651. }
  6652. await WG.sleep(100);
  6653. WG.SendCmd(cmds);
  6654. },
  6655. eqskill: async function (idx = 0, n, cmds) {
  6656. cmds = T.recmd(idx, cmds);
  6657. if (n == "0") {
  6658. WG.uneqall(1);
  6659. } else {
  6660. WG.eqhelper(n, 1);
  6661. }
  6662. await WG.sleep(100);
  6663. WG.SendCmd(cmds);
  6664. },
  6665. eqdel: async function (idx = 0, n, cmds) {
  6666. cmds = T.recmd(idx, cmds);
  6667. WG.eqhelperdel(n);
  6668. await WG.sleep(100);
  6669. WG.SendCmd(cmds);
  6670. },
  6671. zdwk: async function (idx = 0, n, cmds) {
  6672. cmds = T.recmd(idx, cmds);
  6673. WG.zdwk();
  6674. await WG.sleep(100);
  6675. WG.SendCmd(cmds);
  6676. },
  6677. rzdwk: async function (idx = 0, n, cmds) {
  6678. cmds = T.recmd(idx, cmds);
  6679. WG.zdwk("", false);
  6680. await WG.sleep(100);
  6681. WG.SendCmd(cmds);
  6682. },
  6683. killhook: undefined,
  6684. killw: async function (idx = 0, n, cmds) {
  6685. cmds = T.recmd(idx, cmds);
  6686. var killid = "";
  6687. for (let i = 0; i < roomData.length; i++) {
  6688. if (roomData[i].name && roomData[i].name.indexOf(n) >= 0) {
  6689. killid = roomData[i].id;
  6690. }
  6691. }
  6692. T.killhook = WG.add_hook('itemremove', function (data) {
  6693. if (data.id == killid) {
  6694. WG.SendCmd(cmds);
  6695. WG.remove_hook(T.killhook);
  6696. T.killhook = undefined;
  6697. }
  6698. });
  6699. WG.SendCmd("kill " + killid);
  6700. },
  6701. eqhook: undefined,
  6702. eqw: async function (idx = 0, n, cmds) {
  6703. var pcmds = T.recmd(idx, cmds);
  6704. if (n.indexOf("<") >= 0) {
  6705. T._findItem(n, async function (id) {
  6706. let p_itemid = id;
  6707. let p_flag = true;
  6708. if (p_itemid == "") {
  6709. p_flag = false;
  6710. WG.SendCmd(pcmds);
  6711. return;
  6712. }
  6713. T.eqhook = WG.add_hook('dialog', function (data) {
  6714. if (data.eq == 0 && data.id == p_itemid) {
  6715. p_flag = false;
  6716. WG.SendCmd(pcmds);
  6717. WG.remove_hook(T.eqhook);
  6718. T.eqhook = undefined;
  6719. }
  6720. });
  6721. while (p_flag) {
  6722. WG.Send("pack");
  6723. WG.SendCmd('eq ' + p_itemid);
  6724. await WG.sleep(1000);
  6725. }
  6726.  
  6727. });
  6728. } else {
  6729. let p_itemid = n;
  6730. let p_flag = true;
  6731. if (p_itemid == "") {
  6732. p_flag = false;
  6733. WG.SendCmd(pcmds);
  6734. return;
  6735. }
  6736. T.eqhook = WG.add_hook(['text', 'dialog'], function (data) {
  6737. if (data.type == 'dialog') {
  6738. if (data.eq == 0 && data.id == p_itemid) {
  6739. p_flag = false;
  6740. WG.SendCmd(pcmds);
  6741. WG.remove_hook(T.eqhook);
  6742. T.eqhook = undefined;
  6743. }
  6744. }
  6745. if (data.type == 'text') {
  6746. if (data.msg.indexOf("你要装备什么") >= 0) {
  6747. p_flag = false;
  6748. WG.SendCmd(pcmds);
  6749. WG.remove_hook(T.eqhook);
  6750. T.eqhook = undefined;
  6751. }
  6752. }
  6753. });
  6754. while (p_flag) {
  6755. WG.Send("pack");
  6756. WG.SendCmd('eq ' + p_itemid);
  6757. await WG.sleep(1000);
  6758. }
  6759. }
  6760. },
  6761. usezml: async function (idx = 0, n, cmds) {
  6762. cmds = T.recmd(idx, cmds);
  6763. zml = GM_getValue(roleid + "_zml", zml);
  6764. for (var zmlitem of zml) {
  6765. if (zmlitem.name == n) {
  6766. await WG.zmlfire(zmlitem);
  6767. }
  6768. }
  6769. await WG.sleep(100);
  6770. WG.SendCmd(cmds);
  6771. },
  6772. waitpfm: async function (idx = 0, n, cmds) {
  6773. cmds = T.recmd(idx, cmds);
  6774. let _flag = true;
  6775. let pfmnum = 0;
  6776.  
  6777. while (_flag) {
  6778. if (!G.gcd && !G.cds.get(n)) {
  6779. WG.Send("perform " + n);
  6780. pfmnum++;
  6781. if (G.cds.get(n) && _flag) {
  6782. _flag = false;
  6783. WG.SendCmd(cmds);
  6784. }
  6785. if (!G.in_fight && _flag) {
  6786. _flag = false;
  6787. WG.SendCmd(cmds);
  6788. }
  6789. if (pfmnum >= 1 && _flag) {
  6790. _flag = false;
  6791. WG.SendCmd(cmds);
  6792. }
  6793. }
  6794. pfmnum++;
  6795. await WG.sleep(350);
  6796. }
  6797.  
  6798. },
  6799. startjk: async function (idx = 0, n, cmds) {
  6800. cmds = T.recmd(idx, cmds);
  6801. ztjk_item = GM_getValue(roleid + "_ztjk", ztjk_item);
  6802. for (var item of ztjk_item) {
  6803. if (item.name == n) {
  6804. item.isactive = 1;
  6805. GM_setValue(roleid + "_ztjk", ztjk_item);
  6806. WG.ztjk_func();
  6807. messageAppend("已注入" + item.name, 0, 1);
  6808. break;
  6809. }
  6810. }
  6811. await WG.sleep(100);
  6812. WG.SendCmd(cmds);
  6813. },
  6814. stopjk: async function (idx = 0, n, cmds) {
  6815. cmds = T.recmd(idx, cmds);
  6816. ztjk_item = GM_getValue(roleid + "_ztjk", ztjk_item);
  6817. for (var item of ztjk_item) {
  6818. if (item.name == n) {
  6819. item.isactive = 0;
  6820. GM_setValue(roleid + "_ztjk", ztjk_item);
  6821. WG.ztjk_func();
  6822. messageAppend("已暂停" + item.name);
  6823. break;
  6824. }
  6825. }
  6826. await WG.sleep(100);
  6827. WG.SendCmd(cmds);
  6828. },
  6829. sm: async function (idx = 0, n = 0, cmds = '') {
  6830. cmds = T.recmd(idx, cmds);
  6831. WG.sm_button();
  6832.  
  6833. while ($('.sm_button').text().indexOf("停止") >= 0) {
  6834. await WG.sleep(1000);
  6835. }
  6836. await WG.sleep(100);
  6837. WG.SendCmd(cmds);
  6838. },
  6839. daily: async function (idx = 0, n, cmds) {
  6840. cmds = T.recmd(idx, cmds);
  6841. KEY.do_command("tasks");
  6842. messageAppend("执行请安.", 1);
  6843. await WG.oneKeyQA();
  6844. WG.oneKeyDaily();
  6845. await WG.sleep(2000);
  6846. while (WG.daily_hook != undefined) {
  6847. await WG.sleep(1000);
  6848. }
  6849. WG.Send('tasks');
  6850. await WG.sleep(1000);
  6851. WG.oneKeySD();
  6852. while (WG.sd_hook) {
  6853. await WG.sleep(1000);
  6854. }
  6855.  
  6856. await WG.sleep(100);
  6857. WG.SendCmd(cmds);
  6858. },
  6859. xiyan: async function (idx = 0, n, cmds) {
  6860. cmds = T.recmd(idx, cmds);
  6861. WG.xiyan();
  6862. await WG.sleep(1000);
  6863. while (WG.marryhy) {
  6864. await WG.sleep(1000);
  6865. }
  6866. await WG.sleep(100);
  6867. WG.SendCmd(cmds);
  6868. },
  6869. yamen: async function (idx = 0, n, cmds) {
  6870. cmds = T.recmd(idx, cmds);
  6871. WG.go_yamen_task();
  6872. await WG.sleep(1000);
  6873. while (WG.yamen_lister) {
  6874. await WG.sleep(1000);
  6875. }
  6876. await WG.sleep(100);
  6877. WG.SendCmd(cmds);
  6878. },
  6879. wudao: async function (idx = 0, n, cmds) {
  6880. cmds = T.recmd(idx, cmds);
  6881. WG.wudao_auto();
  6882. await WG.sleep(100);
  6883. WG.SendCmd(cmds);
  6884. },
  6885. boss: async function (idx = 0, n, cmds) {
  6886. cmds = T.recmd(idx, cmds);
  6887. WG.kksBoss({
  6888. content: "听说xxx出现在逍遥派-青草坪一带。"
  6889. });
  6890. await WG.sleep(1000);
  6891. while (WG.ksboss) {
  6892. await WG.sleep(1000);
  6893. }
  6894. await WG.sleep(100);
  6895. WG.SendCmd(cmds);
  6896. },
  6897. stoppfm: async function (idx = 0, n, cmds) {
  6898. cmds = T.recmd(idx, cmds);
  6899. if (G.auto_preform) {
  6900. G.auto_preform = false;
  6901. messageAppend("<hio>自动施法</hio>关闭");
  6902. WG.auto_preform("stop");
  6903. }
  6904. await WG.sleep(100);
  6905. WG.SendCmd(cmds);
  6906. },
  6907. startpfm: async function (idx = 0, n, cmds) {
  6908. cmds = T.recmd(idx, cmds);
  6909. if (!G.auto_preform) {
  6910. G.auto_preform = true;
  6911. messageAppend("<hio>自动施法</hio>开启");
  6912. WG.auto_preform();
  6913. }
  6914. await WG.sleep(100);
  6915. WG.SendCmd(cmds);
  6916. },
  6917. stopautopfm: async function (idx = 0, n, cmds) {
  6918. cmds = T.recmd(idx, cmds);
  6919. var dellist = n.split(",");
  6920. for (let p of dellist) {
  6921. if (!WG.inArray(p, blackpfm)) {
  6922. blackpfm.push(p);
  6923. }
  6924. }
  6925. console.log("当前自动施法黑名单为:" + blackpfm);
  6926. await WG.sleep(100);
  6927. WG.SendCmd(cmds);
  6928. },
  6929. startautopfm: async function (idx = 0, n, cmds) {
  6930. cmds = T.recmd(idx, cmds);
  6931. let dellist = n.split(",");
  6932. for (var i = 0; i < blackpfm.length; i++) {
  6933. for (var item of dellist) {
  6934. if (item == blackpfm[i]) {
  6935. blackpfm.baoremove(i);
  6936. }
  6937. }
  6938. }
  6939. console.log("当前自动施法黑名单为:" + blackpfm);
  6940. await WG.sleep(100);
  6941. WG.SendCmd(cmds);
  6942. },
  6943. store: async function (idx = 0, n, cmds) {
  6944. cmds = T.recmd(idx, cmds);
  6945. await WG.sell_all(1, 0, 0);
  6946. while (WG.packup_listener) {
  6947. await WG.sleep(200);
  6948. }
  6949. await WG.sleep(100);
  6950. WG.SendCmd(cmds);
  6951. },
  6952. fenjie: async function (idx = 0, n, cmds) {
  6953. cmds = T.recmd(idx, cmds);
  6954. await WG.sell_all(0, 1, 0);
  6955. while (WG.packup_listener) {
  6956. await WG.sleep(200);
  6957. }
  6958. await WG.sleep(100);
  6959. WG.SendCmd(cmds);
  6960. },
  6961. drop: async function (idx = 0, n, cmds) {
  6962. cmds = T.recmd(idx, cmds);
  6963. await WG.sell_all(0, 0, 1);
  6964. while (WG.packup_listener) {
  6965. await WG.sleep(200);
  6966. }
  6967. await WG.sleep(100);
  6968. WG.SendCmd(cmds);
  6969. },
  6970. sellall: async function (idx = 0, n, cmds) {
  6971. cmds = T.recmd(idx, cmds);
  6972. await WG.sell_all(1, 1, 1);
  6973. while (WG.packup_listener) {
  6974. await WG.sleep(200);
  6975. }
  6976. await WG.sleep(100);
  6977. WG.SendCmd(cmds);
  6978. },
  6979. callcontextMenu: function (idx = 0, n, cmds) {
  6980. $('.container').contextMenu({
  6981. x: 1,
  6982. y: 1
  6983. })
  6984. },
  6985. stopallauto: function (idx = 0, n, cmds) {
  6986. cmds = T.recmd(idx, cmds);
  6987. WG.stopAllAuto();
  6988. messageAppend("暂停自动喜宴及自动BOSS", 0, 1);
  6989. WG.SendCmd(cmds);
  6990. },
  6991. startallauto: function (idx, n, cmds) {
  6992. cmds = T.recmd(idx, cmds);
  6993. WG.reSetAllAuto();
  6994. messageAppend("恢复自动喜宴及自动BOSS", 0, 1);
  6995. WG.SendCmd(cmds);
  6996. },
  6997. roll: function (idx, n, cmds) {
  6998. cmds = T.recmd(idx, cmds);
  6999. if (n == 1) {
  7000. WG.SendCmd("pty " + Math.random() * 100);
  7001. } else if (n == 2) {
  7002.  
  7003. WG.SendCmd("chat " + Math.random() * 100);
  7004. } else if (n == 3) {
  7005.  
  7006. WG.SendCmd("say " + Math.random() * 100);
  7007. }
  7008. WG.SendCmd(cmds);
  7009. },
  7010. addstore: function (idx, n, cmds) {
  7011. cmds = T.recmd(idx, cmds);
  7012. WG.addstore(n);
  7013. WG.SendCmd(cmds);
  7014. }, addlock: function (idx, n, cmds) {
  7015. cmds = T.recmd(idx, cmds);
  7016. WG.addlock(n);
  7017. WG.SendCmd(cmds);
  7018. }, dellock: function (idx, n, cmds) {
  7019. cmds = T.recmd(idx, cmds);
  7020. WG.dellock(n);
  7021. WG.SendCmd(cmds);
  7022. }, tnbuy: function (idx, n, cmds) {
  7023. cmds = T.recmd(idx, cmds);
  7024. WG.tnBuy();
  7025. WG.SendCmd(cmds);
  7026. }, zxbuy: function (idx, n, cmds) {
  7027. cmds = T.recmd(idx, cmds);
  7028. WG.zxBuy();
  7029. WG.SendCmd(cmds);
  7030. }, atlx: function (idx, n, cmds) {
  7031. cmds = T.recmd(idx, cmds);
  7032.  
  7033. WG.selectLowKongfu(parseInt(n));
  7034. WG.SendCmd(cmds);
  7035. },
  7036. addfenjieid: function (idx, n, cmds) {
  7037. cmds = T.recmd(idx, cmds);
  7038. WG.addfenjieid(n);
  7039. WG.SendCmd(cmds);
  7040. },
  7041. adddrop: function (idx, n, cmds) {
  7042. cmds = T.recmd(idx, cmds);
  7043. WG.adddrop(n);
  7044. WG.SendCmd(cmds);
  7045. }, addzxbuy: function (idx, n, cmds) {
  7046. cmds = T.recmd(idx, cmds);
  7047. WG.addzxbuy(n);
  7048. WG.SendCmd(cmds);
  7049. },
  7050. clsSakada: function (idx, n, cmds) {
  7051. cmds = T.recmd(idx, cmds);
  7052. WG.clean_dps();
  7053. WG.SendCmd(cmds);
  7054. },
  7055. cls: function (idx, n, cmds) {
  7056. cmds = T.recmd(idx, cmds);
  7057. messageClear();
  7058. WG.SendCmd(cmds);
  7059. },
  7060. syso: function (idx, n, cmds) {
  7061. cmds = T.recmd(idx, cmds);
  7062. messageAppend(n);
  7063. WG.SendCmd(cmds);
  7064. },
  7065. stop: function (idx, n, cmds) {
  7066. cmds = T.recmd(idx, cmds);
  7067. WG.timer_close();
  7068. WG.SendCmd(cmds);
  7069. },
  7070. tts: function (idx, n, cmds) {
  7071. cmds = T.recmd(idx, cmds);
  7072. FakerTTS.playtts(n);
  7073. WG.SendCmd(cmds);
  7074. },
  7075. beep: async function (idx, n, cmds) {
  7076. cmds = T.recmd(idx, cmds);
  7077. Beep();
  7078. WG.SendCmd(cmds);
  7079. },
  7080. music: function (idx, n, cmds) {
  7081. cmds = T.recmd(idx, cmds);
  7082. var music = new MusicBox({
  7083. loop: false, // 循环播放
  7084. musicText: '6 - - 5 - 3 2 - 1 - - - 3 - - 2 1 - ·6 ·5 - - - ·5 - ·6 - ·5 - ·6 - 1 - - 2 - 3 5 6 - - 3 2 1 - 2', // 绿色
  7085. autoplay: 6, // 自动弹奏速度
  7086. type: 'triangle', // 音色类型 sine|square|triangle|sawtooth
  7087. duration: 2 // 键音延长时间
  7088. });
  7089. WG.SendCmd(cmds);
  7090. }
  7091.  
  7092.  
  7093. };
  7094. var ProConsole = {
  7095. init: function () {
  7096. //判断
  7097. if (!L.isMobile()) {
  7098. layer.open({
  7099. type: 1,
  7100. title: "运行命令",
  7101. shade: false,
  7102. offset: "rb",
  7103. zIndex: 961024,
  7104. success: function (layero, index) {
  7105. $(".runtesta").show();
  7106. },
  7107. content: $(".runtest"),
  7108. end: function () {
  7109. $(".runtesta").off("click");
  7110. $(".runtesta").hide();
  7111. }
  7112. });
  7113. var lastrun = GM_getValue("_lastrun", "");
  7114. if (lastrun != "") {
  7115. $("#testmain").val(lastrun);
  7116. }
  7117. $(".runtesta").off("click");
  7118. $(".runtesta").on('click', function () {
  7119. if ($('#testmain').val().split("\n")[0].indexOf("//") >= 0) {
  7120. if (unsafeWindow && unsafeWindow.ToRaid) {
  7121. ToRaid.perform($('#testmain').val());
  7122. }
  7123. } else if ($('#testmain').val().split("\n")[0].indexOf("#js") >= 0) {
  7124. var jscode = $('#testmain').val().split("\n");
  7125. jscode.baoremove(0)
  7126. eval(jscode.join(""));
  7127. } else {
  7128. WG.SendCmd($('#testmain').val());
  7129. }
  7130.  
  7131. });
  7132. $("#testmain").focusout(function () {
  7133. GM_setValue("_lastrun", $('#testmain').val());
  7134. })
  7135. } else {
  7136. layer.prompt({ title: '请输入...', formType: 2 }, function (text, index) {
  7137. layer.close(index);
  7138. if (text != null) {
  7139. if (text.split("\n")[0].indexOf("//") >= 0) {
  7140. if (unsafeWindow && unsafeWindow.ToRaid) {
  7141. ToRaid.perform(text);
  7142. }
  7143. } else if (text.split("\n")[0].indexOf("#js") >= 0) {
  7144. var jscode = text.split("\n");
  7145. jscode.baoremove(0)
  7146. eval(jscode.join(""));
  7147. } else {
  7148. WG.SendCmd(text);
  7149. }
  7150. }
  7151. });
  7152. }
  7153.  
  7154. },
  7155. close: function () {
  7156. layer.close();
  7157. }
  7158.  
  7159. }
  7160. //UI
  7161. var UI = {
  7162. codeInput: `<div class="runtest layui-layer-wrap" style="display: none;">
  7163. <textarea class="site-demo-text" id="testmain" data-enpassusermodified="yes">
  7164. //<-第一行输入双斜杠即可运行流程命令 ,第一行输入#js 即可运行JS\n
  7165. </textarea>
  7166. <a class="layui-btn layui-btn-normal runtesta" style="position:absolute;right:20px;bottom:20px" >立即运行</a>
  7167. </div>`,
  7168. zdybtnui: function () {
  7169. let ui = `<div class='WG_button'>`;
  7170. let keyitem = ["Q", "W", "E", "R", "T", "Y"];
  7171. let i = 0;
  7172. for (let item of zdy_btnlist) {
  7173. ui = ui + ` <span class='zdy-item' id = 'keyin${keyitem[i]}'>${item.name}(${keyitem[i]})</span>`;
  7174. i = i + 1;
  7175. }
  7176. return ui + `<span class="zdy-item auto_perform" style="float:right;"> 自动攻击 </span>
  7177. <span class="zdy-item cmd_echo" style="float:right;">代码</span> </div>`;
  7178. },
  7179. btnui: function () {
  7180. return `<div class='WG_button'><span class='zdy-item sm_button'>师门(Q)</span>
  7181. <span class='zdy-item go_yamen_task'>追捕(W)</span>
  7182. <span class='zdy-item kill_all'>击杀(E)</span>
  7183. <span class='zdy-item get_all'>拾取(R)</span>
  7184. <span class='zdy-item sell_all'>清包(T)</span>
  7185. <span class='zdy-item zdwk'>挖矿(Y)</span>
  7186. <span class="zdy-item auto_perform" style="float:right;"> 自动攻击 </span>
  7187. <span class="zdy-item cmd_echo" style="float:right;">代码</span> </div>`
  7188. },
  7189. wgui: function () {
  7190. let p;
  7191. if (inzdy_btn) {
  7192. p = UI.zdybtnui();
  7193. } else {
  7194. p = UI.btnui();
  7195. }
  7196. return ` <div class='WG_log'>
  7197. <pre></pre>
  7198. </div>` +
  7199. p;
  7200. },
  7201. zdyBtnsetui: function () {
  7202. let ui = '';
  7203.  
  7204. let keyitem = ["Q", "W", "E", "R", "T", "Y"];
  7205. for (let item of keyitem) {
  7206. ui = ui + `<div class="setting-item setting-item2 ">
  7207. <div style='width:10%'>${item}:</div><span>名称:<input style='width:20%' id='name${item}' /></span> <span style='margin-left:5px'>命令:<input id='send${item}'/></span>
  7208. </div>`
  7209. }
  7210. ui = ui + `
  7211. <div class="setting-item" >
  7212. <div class="item-commands"><span class="savebtn">保存自定义按钮设置</span></div>
  7213. </div>
  7214. `;
  7215. return ui;
  7216. },
  7217. html_lninput: function (prop, title) {
  7218. return `
  7219. <div class="setting-item" >
  7220. <span><label for="${prop}">${title}</label><input id="${prop}" name="${prop}" type="text" style="width:80px" value>
  7221. </span> </div> `;
  7222. },
  7223. html_input: function (prop, title) {
  7224. return `
  7225. <div class="setting-item" >
  7226. <span><label for="${prop}"> ${title}</label> </span>
  7227. </div>
  7228. <textarea class="settingbox hide zdy-box" id="${prop}" name="${prop}" style="display: inline-block;"> </textarea>
  7229. `;
  7230. },
  7231. html_switch: function (prop, title, pfor) {
  7232. return `<div class="setting-item setting-item2 " for="${pfor}" style='display: inline-block;'>
  7233. <span class="title"> ${title}</span>
  7234. <span class="switch2" id="${prop}" >
  7235. <span class="switch-button"></span>
  7236. <span class="switch-text">关</span>
  7237. </span>
  7238. </div>
  7239. `;
  7240. },
  7241. switchClick: function (e) {
  7242. let t = $(this),
  7243. s = t.parent().attr("for");
  7244. if (t.is(".on")) {
  7245. t.removeClass("on");
  7246. t.find(".switch-text").html("关")
  7247. } else {
  7248. t.addClass("on");
  7249. t.find(".switch-text").html("开");
  7250. }
  7251. },
  7252. syssetting: function () {
  7253. return `<h3>插件</h3>
  7254. <div class="setting-item zdy_dialog" >
  7255. 有空的话请点个star,您的支持是我最大的动力<a href="https://github.com/knva/wsmud_plugins" target="_blank">https://github.com/knva/wsmud_plugins</a>
  7256. </div> `+
  7257. UI.html_lninput("welcome", "欢迎语句: ") +
  7258. UI.html_lninput("die_str", "死亡提示: ") + `
  7259. <div class="setting-item">
  7260. <span> <label for="color_select"> 界面配色: </label><select id="color_select" style="width:80px">
  7261. <option value="normal"> 原版 </option>
  7262. <option value="flat"> flat模式 </option>
  7263. <option value="access"> 色若模式</option>
  7264. </select> *此功能刷新后生效
  7265. </span></div>
  7266. <div class="setting-item" >
  7267. <span><label for="family">门派选择:</label><select id="family" style="width:80px">
  7268. <option value="武当">武当</option>
  7269. <option value="华山">华山</option>
  7270. <option value="少林">少林</option>
  7271. <option value="峨眉">峨眉</option>
  7272. <option value="逍遥">逍遥</option>
  7273. <option value="丐帮">丐帮</option>
  7274. <option value="武馆">武馆</option>
  7275. <option value="杀手楼">杀手楼</option>
  7276. </select>
  7277. </span>
  7278. </div>`
  7279.  
  7280. + UI.html_switch('autorelogin', '自动重连: ', 'auto_relogin')
  7281. + UI.html_switch('shieldswitch', '聊天频道屏蔽开关: ', 'shieldswitch')
  7282. + UI.html_switch('silence', '安静模式:', 'silence')
  7283. + UI.html_switch('dpssakada', '战斗统计:', 'dpssakada')
  7284. + UI.html_switch('funnycalc', 'funny计算:', 'funnycalc')
  7285. + `<h3>屏蔽选项</h3>`
  7286. + UI.html_lninput("shield", "屏蔽人物名(用半角逗号分隔):")
  7287. + UI.html_lninput("shieldkey", "屏蔽关键字(用半角逗号分隔):")
  7288.  
  7289. + `<h3>师门任务配置</h3>`
  7290. + UI.html_switch('sm_loser', '师门自动放弃:', "sm_loser")
  7291. + UI.html_switch('sm_any', '师门任务提交稀有:', "sm_any")
  7292. + UI.html_switch('sm_price', '师门自动牌子:', 'sm_price')
  7293. + UI.html_switch('sm_getstore', '师门自动仓库取:', "sm_getstore")
  7294.  
  7295. + `<h3>自命令配置</h3>
  7296. <div class="setting-item" >
  7297. <span> <label for="zmlshowsetting"> 自命令显示位置: </label><select id="zmlshowsetting" style="width:80px">
  7298. <option value="0"> 物品栏 </option>
  7299. <option value="1"> 技能栏下方 </option>
  7300. </select>
  7301. </span></div> `
  7302. + `<h3>武道塔配置</h3>`
  7303. + UI.html_lninput("wudao_pfm", "武道释放技能(用半角逗号分隔):")
  7304. + `<h3>杂项配置</h3>`
  7305. + UI.html_switch('autorewardgoto', '开启转发路径:', 'auto_rewardgoto')
  7306. + UI.html_switch('busyinfo', '显示昏迷信息:', 'busy_info')
  7307. + UI.html_switch('saveAddr', '使用豪宅仓库:', "saveAddr")
  7308. + UI.html_switch('getitemShow', '显示获得物品:', 'getitemShow')
  7309.  
  7310. + UI.html_input("statehml", "当你各种状态中断后,自动以下操作(部分地点不执行):")
  7311. + UI.html_input("backimageurl", "背景图片url(建议使用1920*1080分辨率图片):")
  7312. + UI.html_input("loginhml", "登录后执行命令:") + `
  7313. <div class="setting-item">
  7314. <span> <label for="bagFull"> 背包已满提示: </label><select id="bagFull" style="width:80px">
  7315. <option value="0"> 文字提醒 </option>
  7316. <option value="1"> 提示音 </option>
  7317. <option value="2"> 语音提醒 </option>
  7318. </select>
  7319. </span></div>`
  7320. + `<h3>推送配置</h3>`
  7321. + UI.html_switch('pushSwitch', '远程通知推送开关(使用@push推送通知,语法参考@print):', 'pushSwitch') + `
  7322. <div class="setting-item">
  7323. <span> <label for="pushType"> 通知推送方式(使用方法加群看): </label><select id="pushType" style="width:80px">
  7324. <option value="0"> Server酱(限32字符) </option>
  7325. <option value="1"> Bark iOS </option>
  7326. <option value="2"> PushPlus.plus(支持html标签) </option>
  7327. <option value="3"> 飞书机器人 </option>
  7328. <option value="4"> Qmsg私聊 </option>
  7329. <option value="5"> Qmsg群聊 </option>
  7330. </select>
  7331. </span></div> `
  7332. + UI.html_lninput("pushToken", "推送方式对应的Token或Key(只要Key不要填整个网址):")
  7333. //+ UI.html_lninput("pushUrl", "推演方式对应的推送网址(末尾不要加斜杠/):")
  7334.  
  7335. + `<h3>自动BOSS配置</h3>`
  7336. + UI.html_switch('marry_kiss', '自动喜宴:', "automarry")
  7337. + UI.html_switch('ks_Boss', '自动传到boss:', "autoKsBoss")
  7338. + UI.html_lninput("auto_eq", "BOSS击杀时自动换装:")
  7339. + UI.html_lninput("ks_pfm", "BOSS叫杀延时(ms): ")
  7340. + UI.html_lninput("ks_wait", "BOSS击杀等待延迟(s): ")
  7341. + UI.html_input("auto_command", "输入喜宴及boss后命令(留空为自动挖矿或修炼):")
  7342. + UI.html_input("blacklist", "输入黑名单boss名称(黑名单boss不会去打,中文,用半角逗号分隔):")
  7343.  
  7344.  
  7345. + `<h3>自动施法配置</h3>`
  7346. + UI.html_input("unauto_pfm", "自动施法黑名单(填技能代码,使用半角逗号分隔):")
  7347. + UI.html_switch('autopfmswitch', '自动施法开关:', 'auto_pfmswitch')
  7348. + UI.html_switch('autopfmmode', 'AI施法模式:', 'auto_pfm_mode')
  7349.  
  7350.  
  7351. + `<h3>仓库存储配置</h3>`
  7352. + UI.html_switch('autoupdateStore', '自动更新仓库数据:', 'auto_updateStore')
  7353. + UI.html_input("store_info", "自动存储的物品名称(自动获得的物品信息,随仓库内容更新):")
  7354. + UI.html_input("store_info2", "手动添加的自动存仓物品信息(不会随仓库内容更新,使用半角逗号分隔):")
  7355. + UI.html_input("lock_info", "已锁物品名称(锁定物品不会自动丢弃,使用半角逗号分隔):")
  7356. + UI.html_input("store_drop_info", "输入自动丢弃的物品名称(使用半角逗号分隔):")
  7357. + UI.html_input("store_fenjie_info", "输入自动分解的物品名称(使用半角逗号分隔):")
  7358.  
  7359. + UI.html_input("autobuy", "自动当铺购买清单:(用半角逗号分隔)")
  7360. + UI.html_input("autoSkillPaperSell", "自动回收残页清单:(用半角逗号分隔)")
  7361.  
  7362. + `<h3>技能自定义</h3>`
  7363. + UI.html_switch('zdyskillsswitch', '自定义技能顺序开关:', 'zdyskills')
  7364.  
  7365. + UI.html_input("zdyskilllist", "自定义技能顺序json数组:")
  7366. + ` <div class="setting-item" ><div class="item-commands"><span class="clear_skillJson">清空技能json数组</span></div></div>`
  7367. + `
  7368.  
  7369. <div class="setting-item" >
  7370. <div class="item-commands"><span class="update_id_all">初始化ID</span>
  7371. <span class="clean_id_all">清空商品ID配置</span></div>
  7372. </div>
  7373. <div class="setting-item" >
  7374. <div class="item-commands"><span class="update_store">更新存仓数据(覆盖)</span><span class="clean_dps">重置伤害统计</span></div>
  7375. </div>
  7376. <div class="setting-item" >
  7377. <div class="item-commands"><span class="backup_btn">备份到云</span><span class="load_btn">加载云配置</span></div>
  7378. </div>
  7379.  
  7380. <h3>自定义按钮</h3>`
  7381. + UI.zdyBtnsetui() +
  7382. ` <h3>系统</h3> `
  7383. },
  7384.  
  7385. skillsPanel: `<div class="item-commands" style="text-align:center" id='skillsPanelUI'>
  7386. <div style="margin-top:0.5em">
  7387. <div style="width:8em;float:left;text-align:left;padding:0px 0px 0px 2em;height:1.23em" id="wsmud_raid_left" @click='show'><wht>{{role}}</wht></div>
  7388. <div style="width:calc(100% - 16em);float:left;height:1.23em"><hig>套装列表</hig></div>
  7389. <div style="width:8em;float:left;text-align:right;padding:0px 2em 0px 0px;height:1.23em" id="wsmud_raid_right">
  7390. <select style="width:80px" id="eqskills-opts" @change="eqskills_opts_change(eqskills_id)" v-model="eqskills_id">
  7391. <option value="none">选择操作</option>
  7392. <option value="save">新建套装</option>
  7393. <option value="covereq">覆盖套装</option>
  7394. <option value="copyeq">复制命令</option>
  7395. <option value="delete">删除套装</option>
  7396. <option value="uneqall">脱光装备</option>
  7397. </select></div>
  7398. </div>
  7399. <br><br>
  7400. <div class="item-commands">
  7401. <span class="zdy-item" v-for="(item, index) in eqlistdel" @click='deleq(index)'
  7402. style="width: 120px;">
  7403. <div class="eqsname" style="width: 100%;">删除{{index}}</div>
  7404. </span>
  7405. </div>
  7406. <div class="item-commands">
  7407. <span class="zdy-item" v-for="(item, index) in eqlist" @click='eq(index)'
  7408. style="width: 120px;">
  7409. <div class="eqsname" style="width:100%;">装备套装:{{index}}</div>
  7410. </span>
  7411.  
  7412. </div>
  7413. <div class="item-commands">
  7414. <span class="zdy-item" v-for="(item, index) in covereqlist" @click='covereq(index)'
  7415. style="width: 120px;">
  7416. <div class="eqsname" style="width:100%;">覆盖套装:{{index}}</div>
  7417. </span>
  7418.  
  7419. </div>
  7420. <br>
  7421. <div class="item-commands">
  7422. <span class="zdy-item" v-for="(item, index) in eqlist" @click='eqs(index)'
  7423. style="width: 120px;">
  7424. <div class="eqsname" style="width: 100%;">装备技能:{{index}}</div>
  7425. </span>
  7426. </div>
  7427. <div class="item-commands">
  7428. <span class="zdy-item" v-for="(item, index) in cpeqlist" @click='copyeq(index)'
  7429. style="width: 120px;">
  7430. <div class="eqsname" style="width:100%;">复制装备套装:{{index}}</div>
  7431. </span>
  7432.  
  7433. </div>
  7434. <br>
  7435. <div class="item-commands">
  7436. <span class="zdy-item" v-for="(item, index) in cpeqlist" @click='copyeqs(index)'
  7437. style="width: 120px;">
  7438. <div class="eqsname" style="width: 100%;">复制装备技能:{{index}}</div>
  7439. </span>
  7440. </div>
  7441. <br>
  7442.  
  7443. </div>
  7444. `,
  7445.  
  7446.  
  7447. zmlsetting: `<div class='zdy_dialog' style='text-align:right;width:280px' id="zmldialog">
  7448. <div class="setting-item"><span><label for="zml_name"> 输入自定义命令名称:</label></span><span><input id="zml_name"
  7449. style='width:80px' type="text" name="zml_name" value="" v-model="singnalzml.name"></span></div>
  7450. <div class="setting-item"> <label for="zml_type"> 自命令类型: </label><select id="zml_type" style="width:80px"
  7451. v-model="singnalzml.zmlType">
  7452. <option value="0"> 插件原生 </option>
  7453. <option value="1"> Raidjs流程 </option>
  7454. <option value="2"> JS原生 </option>
  7455. </select> </div>
  7456. <div class="setting-item"> <label for="zml_info"> 输入自定义命令(用半角分号(;)分隔):</label></div>
  7457. <div class="setting-item"><textarea class="settingbox hide zdy-box" style="display: inline-block;" id='zml_info'
  7458. v-model="singnalzml.zmlRun"></textarea></div>
  7459. <div class="item-commands"><span class="getSharezml" @click="getShare"> 查询分享 </span> <span class="editadd"
  7460. @click="add"> 保存 </span> <span class="editdel" @click="del"> 删除 </span> </div>
  7461. <div class="item-commands" id="zml_show">
  7462. <span v-for="(item, index) in zmldata" @click="edit(item)">
  7463. 编辑{{item.name}}
  7464. </span>
  7465. <br />
  7466. <span v-for="(item, index) in zmldata" @click="showp(item)">
  7467. <label v-if="item.zmlShow == '1'">取消快速使用</label><label v-else>快速使用</label>{{item.name}}
  7468. </span>
  7469. <br />
  7470. <span v-for="(item, index) in zmldata" @click="share(item)">
  7471. 分享{{item.name}}
  7472. </span>
  7473. <br />
  7474. </div>
  7475. </div> `,
  7476.  
  7477.  
  7478.  
  7479.  
  7480. zmlandztjkui: `<div class='zdy_dialog' style='text-align:right;width:280px' id="zmlandztjk">
  7481. <div class="item-commands"> <span class="editzml" @click="zml"> 编辑自命令 </span> </div>
  7482. <div class="item-commands"> <span class="editztjk" @click="ztjk"> 编辑自定义监控 </span>
  7483. <div class="item-commands"> <span class="startzdjk" @click="startjk"> 注入所有监控 </span> <span class="stopzdjk"
  7484. @click="stopjk"> 暂停所有监控
  7485. </span>
  7486. </div>
  7487. </div>
  7488. <div class="item-commands" id="zml_show">
  7489. <span v-for="(item, index) in zmldata" @click="run(item)">
  7490. {{item.name}}
  7491. </span>
  7492. </div>
  7493. </div>`, ztjksetting: `<div class='zdy_dialog' style='text-align:right;width:280px'>
  7494. <div class="setting-item"> <label> 请打开插件首页,查看文档及例子,本人血量状态监控 请按如下规则输入关键字 90|90 这样监控的是hp 90% mp 90% 以下触发</label></div>
  7495. <div class="setting-item"> <label for="ztjk_name"> 名称:</label><input id="ztjk_name" style='width:80px' type="text"
  7496. name="ztjk_name" value=""></div>
  7497. <div class="setting-item"><label for="ztjk_type"> 类型(type):</label><select style='width:80px' id="ztjk_type">
  7498. <option value="status"> 状态(status) </option>
  7499. <option value="text"> 文本(text) </option>
  7500. <option value="msg"> 聊天(msg) </option>
  7501. <option value="die"> 死亡(die) </option>
  7502. <option value="itemadd"> 人物刷新(itemadd) </option>
  7503. <option value="room"> 地图名与房间人物(room) </option>
  7504. <option value="dialog"> 背包监控(dialog) </option>
  7505. <option value="combat"> 战斗状态(combat) </option>
  7506. <option value="sc"> 血量状态(sc) </option>
  7507. <option value="enapfm"> 技能监控(enapfm) </option>
  7508. <option value="dispfm"> 技能监控(dispfm) </option>
  7509. </select></div>
  7510. <div class="setting-item"><span id='actionp' style='display:block'><label for="ztjk_action">
  7511. 动作(action):</label><input id="ztjk_action" style='width:80px' type="text" name="ztjk_action"
  7512. value=""></span></div>
  7513. <div class="setting-item"><span><label for="ztjk_keyword"> 关键字(使用半角 | 分割):</label><input id="ztjk_keyword"
  7514. style='width:80px' type="text" name="ztjk_keyword" value=""></span></div>
  7515. <div class="setting-item"><span><label for="ztjk_ishave"> 触发对象: </label><select style='width:80px' id="ztjk_ishave">
  7516. <option value="0"> 其他人 </option>
  7517. <option value="1"> 本人 </option>
  7518. <option value="2"> NPC </option>
  7519. </select></span></div>
  7520. <div class="setting-item"> <span id='senduserp' style='display:block'><label for="ztjk_senduser"> MSG/其他人名称(使用半角 |
  7521. 分割):</label><input id="ztjk_senduser" style="width:80px;" type="text" name="ztjk_senduser"
  7522. value=""></span></div>
  7523. <div class="setting-item"> <span style='display:block'><label> Buff层数:</label><input id="ztjk_maxcount"
  7524. style="width:80px;" type="text" name="ztjk_maxcount" value=""></span></div>
  7525. <div class="setting-item"> <span style='display:block'><label> 状态监控提示:</label><select style='width:80px'
  7526. id="ztjk_istip">
  7527. <option value="1"> 提示 </option>
  7528. <option value="0"> 不提示 </option>
  7529. </select></span></div>
  7530. <div class="setting-item"><span><label for="ztjk_send"> 输入自定义命令(用半角分号(;)分隔):</label></span></div>
  7531. <div class="setting-item"> <textarea class="settingbox hide zdy-box" style="display: inline-block;"
  7532. id='ztjk_send'></textarea></div>
  7533. <div class="item-commands"><span class="ztjk_sharedfind"> 查询分享 </span> <span class="ztjk_editadd"> 保存 </span> <span
  7534. class="ztjk_editdel"> 删除 </span></div>
  7535. <div class="item-commands" id="ztjk_show"></div>
  7536. <div class="item-commands" id="ztjk_set"></div>
  7537. </div> `,
  7538. jsquivue: `
  7539. <div class="JsqVueUI">
  7540. <div class="item-commands">
  7541. <span @click='qnjs_btn'>潜能计算</span>
  7542. <span @click='lxjs_btn'>练习时间及潜能计算</span>
  7543. <span @click='khjs_btn'>开花计算</span>
  7544. <span @click='zcjs_btn'>自创等级计算</span>
  7545. <span @click='getskilljson'>提取技能属性(可用于苏轻模拟器)</span>
  7546. <span @click='autoAddLianxi'>自动将最低等级技能添加到离线练习</span>
  7547. </div>
  7548. <div class="item-commands">
  7549. <span @click='onekeydaily'>一键日常</span>
  7550. <span @click='onekeypk'>自动比试</span>
  7551. <span @click='onekeysansan'>导入白三三懒人包(依赖raid.js)</span>
  7552. <span @click='onelddh'>来点动画(依赖raid.js)</span>
  7553. </div>
  7554. <div class="item-commands">
  7555. <span @click="onekeystore">存仓及贩卖</span>
  7556. <span @click='onekeysell'>丢弃及贩卖</span>
  7557. <span @click='onekeyfenjie'>分解及贩卖</span>
  7558. </div>
  7559. <div class="item-commands">
  7560. <span @click='updatestore'>更新仓库数据(覆盖)</span>
  7561. <span @click='sortstore'>排序仓库</span>
  7562. <span @click='sortbag'>排序背包</span>
  7563. <span @click='dsrw'>定时任务</span>
  7564. <span @click='cleandps'>清空伤害</span>
  7565. <span @click='cleankksboss'>不再提示婚宴及boss传送信息</span>
  7566. </div>
  7567. <div class="item-commands">
  7568. <span @click='onekeyyaota'>一键妖塔</span>
  7569. <span @click='onekeydelaytest'>延迟测试</span>
  7570. <span @click='yuanshen'>原神</span>
  7571. </div>
  7572. </div>`,
  7573. lxjsui: `
  7574. <div style="width:50%;float:left" class='StudyTimeCalc'>
  7575. <div class="setting-item"> <span>练习时间计算器</span></div>
  7576. <div class="setting-item">先天悟性:<input type="number" placeholder="先天悟性" style="width:50%"
  7577. class="mui-input-speech" v-model=jsqsx.xtwx></div>
  7578. <div class="setting-item">后天悟性:<input type="number" placeholder="后天悟性" style="width:50%"
  7579. class="mui-input-speech" v-model=jsqsx.htwx></div>
  7580. <div class="setting-item">练习效率:<input type="number" placeholder="练习效率" style="width:50%"
  7581. class="mui-input-speech" v-model=jsqsx.lxxl></div>
  7582. <div class="setting-item">初始等级:<input type="number" placeholder="初始等级" style="width:50%"
  7583. class="mui-input-speech" v-model=jsqsx.clevel></div>
  7584. <div class="setting-item"> 目标等级:<input type="number" placeholder="目标等级" style="width:50%"
  7585. v-model=jsqsx.mlevel></div>
  7586. <div class="setting-item">技能颜色: <select style="width:50%" v-model=jsqsx.color>
  7587. <option value='0'>选择技能颜色</option>
  7588. <option value='1' style="color: #c0c0c0;">白色</option>
  7589. <option value='2' style="color:#00ff00;">绿色</option>
  7590. <option value='3' style="color:#00ffff;">蓝色</option>
  7591. <option value='4' style="color:#ffff00;">黄色</option>
  7592. <option value='5' style="color:#912cee;">紫色</option>
  7593. <option value='6' style="color: #ffa600;">橙色</option>
  7594. <option value='7' style="color: #CC0000;">红色</option>
  7595. </select></div>
  7596. <div class="setting-item">
  7597. <div class="item-commands"><span @click="lxjscalc">计算</span></div>
  7598. </div>
  7599. </div>`,
  7600. qnjsui: ` <div style="width:50%;float:left" class="QianNengCalc">
  7601. <div class="setting-item"> <span>潜能计算器</span></div>
  7602. <div class="setting-item">初始等级:<input type="number" placeholder="初始等级" style="width:50%"
  7603. class="mui-input-speech" v-model='qnsx.c'>
  7604. </div>
  7605. <div class="setting-item"> 目标等级:<input type="number" v-model='qnsx.m' placeholder="目标等级" style="width:50%">
  7606. </div>
  7607. <div class="setting-item"> 技能颜色:<select id="se" style="width:50%" v-model='qnsx.color'>
  7608. <option value='0'>选择技能颜色</option>
  7609. <option value='1' style="color: #c0c0c0;">白色</option>
  7610. <option value='2' style="color:#00ff00;">绿色</option>
  7611. <option value='3' style="color:#00ffff;">蓝色</option>
  7612. <option value='4' style="color:#ffff00;">黄色</option>
  7613. <option value='5' style="color:#912cee;">紫色</option>
  7614. <option value='6' style="color: #ffa600;">橙色</option>
  7615. </select>
  7616. </div>
  7617. <div class="setting-item">
  7618. <div class="item-commands"><span @click="qnjscalc">计算</span></div>
  7619. </div>
  7620.  
  7621. </div>`,
  7622. khjsui: `<div style="width:50%;float:left" class="KaihuaCalc">
  7623. <div class="setting-item"><span>开花计算器</span></div>
  7624. <div class="setting-item"> 当前内力:<input type="number" placeholder="当前内力" style="width:50%"
  7625. class="mui-input-speech" v-model="khsx.nl"></div>
  7626. <div class="setting-item"> 先天根骨:<input type="number" placeholder="先天根骨" style="width:50%"
  7627. v-model="khsx.xg"></div>
  7628. <div class="setting-item"> 后天根骨:<input type="number" placeholder="后天根骨" style="width:50%"
  7629. v-model="khsx.hg"></div>
  7630. <div class="setting-item"> <div class="item-commands"><span @click="khjscalc" >计算</span></div></div>
  7631. <div class="setting-item"> <label>人花分值:5000 地花分值:6500 天花分值:8000</label></div>
  7632. </div>`,
  7633. zcjsui: `<div style="width:50%;float:left" class="ZiChuangCalc">
  7634. <div class="setting-item"><span>自创等级计算器</span></div>
  7635. <div class="setting-item"> 自创等级:<input type="number" placeholder="自创等级" style="width:50%"
  7636. class="mui-input-speech" v-model="zcsx.level"></div>
  7637. <div class="setting-item"> 目标属性百分比:<input type="number" placeholder="目标属性百分比" style="width:50%"
  7638. v-model="zcsx.percentage"></div>
  7639.  
  7640. <div class="setting-item"> <div class="item-commands"><span @click="zcjscalc" >计算</span></div></div>
  7641.  
  7642. </div>`,
  7643. lyui: `<div class='zdy_dialog' id="LianYao" style='text-align:right;width:280px'> 有空的话请点个star,您的支持是我最大的动力 <a target="_blank"
  7644. href="https://github.com/knva/wsmud_plugins">https://github.com/knva/wsmud_plugins</a> 药方链接:<a target="_blank"
  7645. href="https://emeisuqing.github.io/wsmud.old/yaofang/">https://emeisuqing.github.io/wsmud.old/yaofang/</a>
  7646. <div class="setting-item"> <span> <label for="medicine_level"> 级别选择: </label><select style='width:80px'
  7647. id="medicine_level" v-model="level">
  7648. <option value="1">绿色</option>
  7649. <option value="2">蓝色</option>
  7650. <option value="3">黄色</option>
  7651. <option value="4">紫色</option>
  7652. <option value="5">橙色</option>
  7653. <option value="6">红色</option>
  7654. </select></span></div>
  7655. <div class="setting-item"> 数量:<span><input id="mednum" v-model="num" style="width:80px;" type="number" name="mednum" value="1">
  7656. </span></div>
  7657. <div class="setting-item"> <span><label for="medicint_info"> 输入使用的顺序(使用半角逗号分隔,多配方使用 | 分割):</label></span></div>
  7658. <div class="setting-item"><textarea v-model="info" class="settingbox hide zdy-box" style="display: inline-block;"
  7659. id='medicint_info'>石楠叶,金银花,金银花,金银花,当归</textarea></div>
  7660. <div class="item-commands"> <span class="startDev" @click="startDev"> 开始 </span><span class="stopDev" @click="stopDev"> 停止 </span> </div>
  7661. </div>`,
  7662. timeoutui: `<div class='zdy_dialog' style='text-align:right;width:280px'> 注意,可以留空的时或者分,这样就是每分钟/小时 x秒触发任务,秒为必填项目 <div class="setting-item"> <span>任务名:<input type="text" id="questname" placeholder="任务名" style="width:50%"></span></div> <div class="setting-item"> <label for = "rtype"> 运行次数 </label><select style='width:80px' id="rtype"></div> <option value="1">一次</option> <option value="2">每天</option> </select></span></div> <div class="setting-item"> <span>时:<input type="number" id="ht" placeholder="时" style="width:50%"></span></div> <div class="setting-item"> <span>分:<input type="number" id="mt" placeholder="分" style="width:50%"></span></div> <div class="setting-item"> <span>秒:<input type="number" id="st" placeholder="秒" style="width:50%"></span></div> <div class="setting-item"> <span><label for="zml_info"> 输入自定义命令(用半角分号(;)分隔):</label></span></div> <div class="setting-item"> <textarea class = "settingbox hide zdy-box"style = "display: inline-block;"id = 'zml_info'></textarea></div> <div class = "item-commands"> <span class = "startQuest"> 开始 </span><span class = "removeQuest"> 删除 </span> </div> <div class='questlist item-commands'></div> </div>`,
  7663. toui: [
  7664. `<div class='item-commands'><span cmd = "$to 扬州城-衙门正厅" > 衙门 </span>
  7665. <span cmd = "$to 扬州城-当铺" > 当铺 </span>
  7666. <span cmd = "$to 扬州城-醉仙楼" > 醉仙 </span>
  7667. <span cmd = "$to 扬州城-杂货铺" > 杂货 </span>
  7668. <span cmd = "$to 扬州城-打铁铺" > 打铁 </span>
  7669. <span cmd = "$to 扬州城-钱庄" > 钱庄 </span>
  7670. <span cmd = "$to 扬州城-药铺" > 药铺 </span>
  7671. <span cmd = "$to 扬州城-扬州武馆" > 武馆 </span>
  7672. <span cmd = "$to 扬州城-镖局正厅" > 镖局 </span>
  7673. <span cmd = "$to 住房" > 住房 </span>
  7674. <span cmd = "$to 扬州城-武庙" > 武庙 </span>
  7675. <span cmd = "$to 帮会-大院" > 帮派 </span>
  7676. <span cmd = "$to 扬州城-赌场" > 赌场 </span>
  7677. <span cmd = "$to 扬州城-有间客栈" > 客栈 </span>
  7678. <span cmd = "$to 扬州城-擂台" > 擂台 </span>
  7679. <span cmd = "$to 扬州城-矿山" > 矿山 </span></div>`,
  7680. `<div class='item-commands'><span cmd = "$to 武当派-后山小院" >掌门</span>
  7681. <span cmd = "$to 武当派-石阶" >后勤</span>
  7682. <span cmd = "$to 武当派-三清殿" >三清殿</span></div>`,
  7683. `<div class='item-commands'><span cmd = "$to 少林派-方丈楼" >掌门</span>
  7684. <span cmd = "$to 少林派-山门殿" >后勤</span>
  7685. <span cmd = "$to 少林派-天王殿" >天王殿</span></div>`,
  7686. `<div class='item-commands'><span cmd = "$to 华山派-客厅" >掌门</span>
  7687. <span cmd = "$to 华山派-练武场" >后勤</span>
  7688. <span cmd = "$to 华山派-落雁峰" >落雁峰</span>
  7689. <span cmd = "$to 华山派-林间小屋" >封不平</span></div>`,
  7690. `<div class='item-commands'><span cmd = "$to 峨眉派-清修洞" >掌门</span>
  7691. <span cmd = "$to 峨眉派-走廊" >后勤</span>
  7692. <span cmd = "$to 峨眉派-小屋" >周芷若</span>
  7693. <span cmd = "$to 峨眉派-大殿" >静心</span></div>`,
  7694. `<div class='item-commands'><span cmd = "$to 逍遥派-地下石室" >掌门</span>
  7695. <span cmd = "$to 逍遥派-林间小道" >后勤</span>
  7696. <span cmd = "$to 逍遥派-木屋" >薛慕华</span>
  7697. <span cmd = "$to 逍遥派-练功房" >木桩</span></div>`,
  7698. `<div class='item-commands'><span cmd = "$to 丐帮-林间小屋" >掌门</span>
  7699. <span cmd = "$to 丐帮-暗道;go east;" >后勤</span>
  7700. <span cmd = "$to 丐帮-土地庙" >土地庙</span></div>`,
  7701. `<div class='item-commands'><span cmd = "$to 杀手楼-书房" >掌门</span>
  7702. <span cmd = "$to 杀手楼-休息室;" >后勤</span></div>`,
  7703. `<div class='item-commands'><span cmd = "@call 自动襄阳" >自动襄阳</span></div>`,
  7704. `<div class='item-commands'><span cmd = "@call 自动武道塔" >自动武道塔</span>
  7705. <span cmd = "$goyt">妖塔</span>
  7706. <span cmd = "$gogzm">古宗门</span>
  7707. <span cmd = "$godddb">大殿底部</span></div>`
  7708. ],
  7709. fbui: function (name, mulit, diffi) {
  7710. let ui = `<div class='item-commands'>`;
  7711. if (unsafeWindow && unsafeWindow.ToRaid) {
  7712. if (ToRaid.existAutoDungeon(`${name} 0`)) {
  7713. ui = ui + `<span cmd = "@fb ${name} 0" >自动副本-${name}</span>`;
  7714. }
  7715. if (diffi) {
  7716. if (ToRaid.existAutoDungeon(`${name} 1`)) {
  7717. ui += `<span cmd = "@fb ${name} 1" >自动副本-${name}-困难</span>`;
  7718. }
  7719. }
  7720. if (mulit) {
  7721. if (ToRaid.existAutoDungeon(`${name} 2`)) {
  7722. ui += `<span cmd = "@fb ${name} 2" >自动副本-${name}-组队</span>`;
  7723. }
  7724. }
  7725. } else {
  7726. ui += `未安装Raid.js插件`;
  7727. }
  7728. if (ui == `<div class='item-commands'>`) {
  7729. return `<div>暂无自动副本脚本,欢迎共享。可以到三三仓库寻找更多脚本。</div>`
  7730. } else {
  7731. return ui + `</div>`;
  7732. }
  7733.  
  7734. },
  7735. itemui: function (itemname) {
  7736. itemname = itemname.toLowerCase();
  7737. let ui = `<div class="item-commands ">
  7738. <span class = "addstore" cmd='$addstore ${itemname}'> 添加到存仓 </span>`;
  7739. if (lock_list.indexOf(itemname) >= 0) {
  7740. ui = ui + `<span class = "dellock" cmd='$dellock ${itemname}'> 移除物品锁 </span>`;
  7741. } else {
  7742. ui = ui + `<span class = "addlock" cmd='$addlock ${itemname}'> 添加物品锁 </span>`;
  7743. }
  7744.  
  7745. if (itemname.indexOf("★") >= 0 || itemname.indexOf("☆") >= 0 || itemname.indexOf("hio") >= 0 || itemname.indexOf("hir") >= 0 || itemname.indexOf("ord") >= 0) {
  7746. ui = ui + `</div>`;
  7747. } else {
  7748. if (itemname.indexOf("残页") >= 0 && itemname != "武道残页") {
  7749. ui = ui + `<span class = "addzxbuy" cmd='$addzxbuy ${itemname}'> 添加到回收 </span>`;
  7750. } else {
  7751. ui = ui + `<span class = "addfenjieid" cmd='$addfenjieid ${itemname}'> 添加到分解 </span>`;
  7752. }
  7753. if (lock_list.indexOf(itemname) == -1) {
  7754. ui = ui + `<span class = "adddrop" cmd='$adddrop ${itemname}'> 添加到丢弃 </span>`;
  7755. }
  7756. ui = ui + `</div>`;
  7757. }
  7758.  
  7759. return ui;
  7760. },
  7761.  
  7762. }
  7763.  
  7764. //全局变量
  7765. var G = {
  7766. id: undefined,
  7767. state: undefined,
  7768. room_name: undefined,
  7769. family: undefined,
  7770. items: new Map(),
  7771. stat_boss_success: 0,
  7772. stat_boss_find: 0,
  7773. stat_xiyan_success: 0,
  7774. stat_xiyan_find: 0,
  7775. cds: new Map(),
  7776. in_fight: false,
  7777. fight_id: "",
  7778. auto_preform: false,
  7779. auto_pfm_mode: false,
  7780. can_auto: false,
  7781. level: undefined,
  7782. getitemShow: undefined,
  7783. wk_listener: undefined,
  7784. status: new Map(),
  7785. score: undefined,
  7786. party: '',
  7787. yaoyuan: 0,
  7788. yaotaFlag: false,
  7789. yaotaCount: 0,
  7790. jy: 0,
  7791. qn: 0,
  7792. selfStatus: [],
  7793. wsdelaySetTime: undefined,
  7794. wsdelaySetCount: undefined,
  7795. wsdelay: undefined,
  7796. enable_skills: [{ type: "unarmed", name: "none" },
  7797. { type: "force", name: "none" },
  7798. { type: "parry", name: "none" },
  7799. { type: "dodge", name: "none" },
  7800. { type: "sword", name: "none" },
  7801. { type: "throwing", name: "none" },
  7802. { type: "blade", name: "none" },
  7803. { type: "whip", name: "none" },
  7804. { type: "club", name: "none" },
  7805. { type: "staff", name: "none" },],
  7806.  
  7807. eqs: [],
  7808. isGod: function () {
  7809. if (G.level != null) {
  7810. if (G.level.indexOf('武帝') >= 0 ||
  7811. G.level.indexOf('武神') >= 0 ||
  7812. G.level.indexOf('剑神') >= 0 ||
  7813. G.level.indexOf('刀皇') >= 0 ||
  7814. G.level.indexOf('兵主') >= 0 ||
  7815. G.level.indexOf('战神') >= 0) {
  7816. return true
  7817. } else {
  7818. return false
  7819. }
  7820. } else {
  7821. return false
  7822. }
  7823. },
  7824. cookie: undefined,
  7825. connected: false
  7826. };
  7827.  
  7828. //GlobalInit
  7829. var GI = {
  7830. gcdThread: null,
  7831. init: function () {
  7832. WG.add_hook("items", function (data) {
  7833. WG.saveRoomstate(data);
  7834. });
  7835. var sendStore = false;
  7836. WG.add_hook(['dialog', 'text'], function (data) {
  7837. if (data.type == "dialog") {
  7838. if (WG.packup_listener == null && data.id != null && data.store != null) {
  7839. if (sendStore) {
  7840. WG.SendCmd("store")
  7841. sendStore = false;
  7842. }
  7843. }
  7844. var stores = data.stores;
  7845. if (stores != null) {
  7846. store_list = [];
  7847. for (let store of stores) {
  7848. store_list.push(store.name.toLowerCase());
  7849. }
  7850. zdy_item_store = store_list.join(',');
  7851. $('#store_info').val(zdy_item_store);
  7852. GM_setValue(roleid + "_zdy_item_store", zdy_item_store);
  7853. store_list = store_list.concat(zdy_item_store2.split(","));
  7854. }
  7855. }
  7856. else {
  7857. auto_updateStore = GM_getValue(roleid + "_auto_updateStore", auto_updateStore);
  7858. if (WG.sort_hook == null && auto_updateStore == "开" && data.msg.indexOf("书架") < 0 &&
  7859. (/^你把(.+)存入仓库。$/.test(data.msg) || /^你从仓库里取出(.+)。$/.test(data.msg))) {
  7860. sendStore = true;
  7861.  
  7862. }
  7863. }
  7864.  
  7865. });
  7866. WG.add_hook("dialog", function (data) {
  7867. if (data.dialog == "pack" && data.items != undefined) {
  7868. packData = data.items;
  7869. eqData = data.eqs;
  7870. G.eqs = data.eqs
  7871. }
  7872. if (data.dialog == "pack" && data.uneq != undefined) {
  7873. G.eqs[data.uneq] = null;
  7874. }
  7875. if (data.dialog == "pack" && data.eq != undefined) {
  7876. G.eqs[data.eq] = { id: data.id, name: "" };
  7877. }
  7878. if (data.dialog == "skills") {
  7879. if (data.enable != null && zdyskills == "开") {
  7880. zdyskilllist == "";
  7881. messageAppend("检测到更换技能,请刷新重新获取技能数据!");
  7882. zdyskills = "关";
  7883. GM_setValue(roleid + "_zdyskilllist", "");
  7884. GM_setValue(roleid + "_zdyskills", zdyskills);
  7885. }
  7886. if (data.items) {
  7887. for (let item of data.items) {
  7888. if (item.name.indexOf("基本") >= 0) {
  7889. if (item.enable_skill) {
  7890. for (let eitem of G.enable_skills) {
  7891. if (eitem.type == item.id) {
  7892. eitem.name = item.enable_skill
  7893. break;
  7894. }
  7895. }
  7896. } else {
  7897. for (let eitem of G.enable_skills) {
  7898. if (eitem.type == item.id) {
  7899. eitem.name = 'none'
  7900. break;
  7901. }
  7902. }
  7903. // G.enable_skills.push({ name: 'none', type: item.id })
  7904. }
  7905. }
  7906. }
  7907. }
  7908. if (data.enable != undefined) {
  7909. for (let item of G.enable_skills) {
  7910. if (item.type == data.id) {
  7911. item.name = data.enable
  7912. break;
  7913. }
  7914. }
  7915. }
  7916. }
  7917. if (data.dialog == 'party') {
  7918. G.party = data.name;
  7919. }
  7920.  
  7921.  
  7922. });
  7923. WG.add_hook(["status", "login", "exits", "room", "items", "itemadd", "itemremove", "sc", "text", "state", "msg", "perform", "clearDistime", "dispfm", "combat", "die"], function (data) {
  7924. switch (data.type) {
  7925. case "login":
  7926. G.id = data.id;
  7927. G.connected = true;
  7928. WG.online = true;
  7929. break;
  7930. case "exits":
  7931. G.exits = new Map();
  7932. if (data.items["north"]) {
  7933. G.exits.set("north", {
  7934. exits: data.items["north"]
  7935. });
  7936. }
  7937. if (data.items["south"]) {
  7938. G.exits.set("south", {
  7939. exits: data.items["south"]
  7940. });
  7941. }
  7942. if (data.items["east"]) {
  7943. G.exits.set("east", {
  7944. exits: data.items["east"]
  7945. });
  7946. }
  7947. if (data.items["west"]) {
  7948. G.exits.set("west", {
  7949. exits: data.items["west"]
  7950. });
  7951. }
  7952. if (data.items["northup"]) {
  7953. G.exits.set("northup", {
  7954. exits: data.items["northup"]
  7955. });
  7956. }
  7957. if (data.items["southup"]) {
  7958. G.exits.set("southup", {
  7959. exits: data.items["southup"]
  7960. });
  7961. }
  7962. if (data.items["eastup"]) {
  7963. G.exits.set("eastup", {
  7964. exits: data.items["eastup"]
  7965. });
  7966. }
  7967. if (data.items["westup"]) {
  7968. G.exits.set("westup", {
  7969. exits: data.items["westup"]
  7970. });
  7971. }
  7972. if (data.items["northdown"]) {
  7973. G.exits.set("northdown", {
  7974. exits: data.items["northdown"]
  7975. });
  7976. }
  7977. if (data.items["southdown"]) {
  7978. G.exits.set("southdown", {
  7979. exits: data.items["southdown"]
  7980. });
  7981. }
  7982. if (data.items["eastdown"]) {
  7983. G.exits.set("eastdown", {
  7984. exits: data.items["eastdown"]
  7985. });
  7986. }
  7987. if (data.items["westdown"]) {
  7988. G.exits.set("westdown", {
  7989. exits: data.items["westdown"]
  7990. });
  7991. }
  7992. if (data.items["up"]) {
  7993. G.exits.set("up", {
  7994. exits: data.items["up"]
  7995. });
  7996. }
  7997. if (data.items["down"]) {
  7998. G.exits.set("down", {
  7999. exits: data.items["down"]
  8000. });
  8001. }
  8002. if (data.items["enter"]) {
  8003. G.exits.set("enter", {
  8004. exits: data.items["enter"]
  8005. });
  8006. }
  8007. if (data.items["out"]) {
  8008. G.exits.set("out", {
  8009. exits: data.items["out"]
  8010. });
  8011. }
  8012. break;
  8013. case "room":
  8014. let tmp = data.path.split("/");
  8015. G.map = tmp[0];
  8016. G.room = tmp[1];
  8017. if (G.map == 'home' || G.room == 'kuang')
  8018. G.can_auto = true;
  8019. else
  8020. G.can_auto = false;
  8021.  
  8022. G.room_name = data.name;
  8023. //强制结束pfm
  8024. if (G.in_fight) {
  8025. G.in_fight = false;
  8026. WG.auto_preform("stop");
  8027. WG.clean_dps();
  8028. }
  8029. break;
  8030. case "items":
  8031. G.items = new Map();
  8032. for (var i = 0; i < data.items.length; i++) {
  8033. let item = data.items[i];
  8034. if (item.id) {
  8035. if (item.id == G.id && item.status != null) {
  8036. G.selfStatus = []
  8037. for (var x = 0; x < item.status.length; x++) {
  8038. G.selfStatus.push(item.status[x].sid)
  8039. }
  8040. }
  8041. let n = $.trim($('<body>' + item.name + '</body>').text());
  8042. let i = n.lastIndexOf(' ');
  8043. let j = n.lastIndexOf('<');
  8044. let t = "";
  8045. let s = "";
  8046. if (j >= 0) {
  8047. s = n.substr(j + 1, 2);
  8048. }
  8049. if (i >= 0) {
  8050. t = n.substr(0, i);
  8051. n = n.substr(i + 1).replace(/<.*>/g, '');
  8052. }
  8053.  
  8054. G.items.set(item.id, {
  8055. name: n,
  8056. title: t,
  8057. state: s,
  8058. max_hp: item.max_hp,
  8059. max_mp: item.max_mp,
  8060. hp: item.hp,
  8061. mp: item.mp,
  8062. p: item.p,
  8063. damage: 0,
  8064. status: item.status
  8065. });
  8066. }
  8067. }
  8068. break;
  8069. case "itemadd":
  8070. if (data.id) {
  8071. let n = $.trim($('<body>' + data.name + '</body>').text());
  8072. let i = n.lastIndexOf(' ');
  8073. let j = n.lastIndexOf('<');
  8074. let t = "";
  8075. let s = "";
  8076. if (i >= 0) {
  8077. t = n.substr(0, i);
  8078. if (j >= 0) {
  8079. s = n.substr(j + 1, 2);
  8080. }
  8081. n = n.substr(i + 1).replace(/<.*>/g, '');
  8082. }
  8083. G.items.set(data.id, {
  8084. name: n,
  8085. title: t,
  8086. state: s,
  8087. max_hp: data.max_hp,
  8088. max_mp: data.max_mp,
  8089. hp: data.hp,
  8090. mp: data.mp,
  8091. p: data.p,
  8092. damage: 0,
  8093. status: data.status
  8094. });
  8095. }
  8096. break;
  8097. case "itemremove":
  8098. G.items.delete(data.id);
  8099. break
  8100. case "sc":
  8101. let xitem = G.items.get(data.id);
  8102. if (data.hp !== undefined) {
  8103. xitem.hp = data.hp;
  8104. if (data.id != G.id) {
  8105. G.scid = data.id; //伤害统计需要
  8106. }
  8107. // WG.showallhp();
  8108. }
  8109. if (data.mp !== undefined) {
  8110. xitem.mp = data.mp;
  8111. }
  8112. if (data.id != G.id) break;
  8113. if (data.hp != null) G.hp = data.hp;
  8114. if (data.max_hp != null) G.maxHp = data.max_hp;
  8115. if (data.mp != null) G.mp = data.mp;
  8116. if (data.max_mp != null) G.maxMp = data.max_mp;
  8117. break
  8118. case "perform":
  8119. G.skills = data.skills;
  8120. if (zdyskilllist == "") {
  8121. zdyskilllist = JSON.stringify(data.skills);
  8122. GM_setValue(roleid + "_zdyskilllist", zdyskilllist);
  8123. }
  8124. break
  8125. case 'clearDistime':
  8126. G.cds.forEach(function (v, k) {
  8127. G.cds.set(k, false);
  8128. });
  8129. case 'dispfm':
  8130. if (data.id) {
  8131. if (data.distime) { }
  8132. G.cds.set(data.id, true);
  8133. var _id = data.id;
  8134. setTimeout(function () {
  8135. G.cds.set(_id, false);
  8136. //技能cd时间到
  8137. let pfmtimeTips = {
  8138. data: JSON.stringify({
  8139. type: "enapfm",
  8140. id: _id
  8141. })
  8142. };
  8143. WG.receive_message(pfmtimeTips);
  8144. }, data.distime);
  8145. }
  8146. if (data.rtime) {
  8147. if (G.gcd) {
  8148. clearTimeout(GI.gcdThread);
  8149. }
  8150. G.gcd = true;
  8151. GI.gcdThread = setTimeout(function () {
  8152. G.gcd = false;
  8153. }, data.rtime);
  8154. }
  8155. break
  8156. case "combat":
  8157. if (data.start) {
  8158. G.in_fight = true;
  8159. battletime = new Date();
  8160. WG.auto_preform();
  8161. }
  8162. if (data.end) {
  8163. G.in_fight = false;
  8164. WG.auto_preform("stop");
  8165. WG.clean_dps();
  8166. }
  8167. break
  8168. case "status":
  8169. if (data.count != undefined) {
  8170. G.status.set(data.id, {
  8171. "sid": data.sid,
  8172. "count": data.count
  8173. });
  8174. }
  8175. if (data.id == G.id) {
  8176. if (data.action == 'add') {
  8177. G.selfStatus.push(data.sid)
  8178. if (data.duration) {
  8179. setTimeout(() => {
  8180. G.selfStatus.remove(data.sid);
  8181. }, data.duration - (data.overtime || 0));
  8182. }
  8183. } else if (data.action == 'remove') {
  8184. let tmpbufflist = []
  8185. for (let i = 0; i < G.selfStatus.length; i++) {
  8186. if (G.selfStatus[i] != data.sid) {
  8187. tmpbufflist.push(G.selfStatus[i])
  8188. }
  8189. }
  8190. G.selfStatus = tmpbufflist;
  8191. } else if (data.action == 'clear') {
  8192. G.selfStatus = []
  8193. }
  8194. }
  8195. if (busy_info === '开') {
  8196. if (data.id == G.id) {
  8197. if (data.action == 'add') {
  8198. if (data.sid == 'busy' || data.sid == 'faint') {
  8199. var _id = data.id;
  8200. messageAppend(`你被${data.name}了${data.duration / 1000}秒`, 2, 0);
  8201. if (data.name == '绊字诀') return;
  8202. }
  8203. }
  8204. } else {
  8205. if (data.action == 'add') {
  8206. if (data.sid == 'busy' || data.sid == 'faint' || data.sid == 'chidun' || data.sid == 'unarmed') {
  8207. let npc = G.items.get(data.id)
  8208. messageAppend(`${npc.name}被${data.name}了${data.duration / 1000}秒`, 2, 0);
  8209. }
  8210. }
  8211. }
  8212. }
  8213. let item = G.items.get(data.id);
  8214. if (item == null) {
  8215. break;
  8216. }
  8217. if (data.action == 'add') {
  8218. if (item.status == null) {
  8219. item.status = [];
  8220. }
  8221. item.status.push({ sid: data.sid, name: data.name, duration: data.duration, overtime: 0 });
  8222. } else if (data.action == 'remove') {
  8223. for (let i = 0; i < item.status.length; i++) {
  8224. let s = item.status[i];
  8225. if (s.sid == data.sid) {
  8226. item.status.splice(i, 1);
  8227. break;
  8228. }
  8229. }
  8230. } else if (data.action == 'clear') {
  8231. for (let i = 0; i < item.status.length; i++) {
  8232. item.status.splice(i, 1);
  8233. }
  8234. }
  8235. break
  8236. case "text":
  8237. if (data.msg.indexOf("还没准备好,你还不能使用。") >= 0) {
  8238. // let skillname = data.msg.replaceAll("还没准备好,你还不能使用。","");
  8239. // let skillid = G.skills.map(e => { return e['name'] == skillname ? e['id'] : '' }).join("")
  8240. // if (skillid!=''){
  8241. // G.cds.set(skillid,true)
  8242. // setTimeout(() => {
  8243. // G.cds.set(skillid,false)
  8244. // }, 1000);
  8245. // }
  8246. if (!G.gcd) {
  8247. G.gcd = true;
  8248. setTimeout(() => {
  8249. G.gcd = false
  8250. }, 500);
  8251. }
  8252. }
  8253. if ((data.msg.indexOf("不要急") >= 0 || data.msg.indexOf("你现在手忙脚乱") >= 0 ||
  8254. data.msg.indexOf("你正在昏迷") >= 0 || data.msg.indexOf("你上个技能") >= 0) && G.auto_preform) {
  8255. if (!G.gcd) {
  8256. G.gcd = true;
  8257. setTimeout(() => {
  8258. G.gcd = false
  8259. }, 500);
  8260. }
  8261. }
  8262. break
  8263. case 'die':
  8264. // console.log('死亡,清除bf')
  8265. G.selfStatus = []
  8266.  
  8267. if (die_str != '' && data.relive == null) {
  8268. textShow(die_str)
  8269. }
  8270. break;
  8271. default:
  8272. break;
  8273. }
  8274. });
  8275. WG.add_hook("state", function (data) {
  8276. console.dir(data);
  8277. if (data.type == 'state' && data.state == undefined) {
  8278. if (G.room_name.indexOf('副本') >= 0 || G.room_name.indexOf('襄阳') >= 0 ||
  8279. G.room_name.indexOf('矿山') >= 0 || G.room_name.indexOf('练功房') >= 0) {
  8280. return;
  8281. }
  8282. statehml = GM_getValue(roleid + '_statehml', statehml);
  8283. WG.SendCmd(statehml);
  8284. }
  8285.  
  8286. });
  8287. WG.add_hook("dialog", function (data) {
  8288. //console.dir(data);
  8289. if (data.dialog == "pack" && data.items != undefined && data.items.length >= 0) {
  8290. //equip =
  8291. for (var i = 0; i < data.items.length; i++) {
  8292. if (data.items[i].name.indexOf("铁镐") >= 0) {
  8293. equip["铁镐"] = data.items[i].id;
  8294. //messageAppend("铁镐ID:" + data.items[i].id);
  8295. }
  8296. }
  8297. for (var j = 0; j < data.eqs.length; j++) {
  8298. if (data.eqs[j] != null && data.eqs[j].name.indexOf("铁镐") >= 0) {
  8299. equip["铁镐"] = data.eqs[j].id;
  8300. //messageAppend("铁镐ID:" + data.eqs[j].id);
  8301. }
  8302. }
  8303.  
  8304. } else if (data.dialog == 'pack' && data.desc != undefined) {
  8305. messageClear();
  8306. var itemname = data.desc.split("\n")[0];
  8307. var htmla = `<div class="item-commands ">
  8308. <span class = "copyid" data-clipboard-target = ".target1" > ` + itemname + ":" + data.id +
  8309. `复制到剪贴板 </span></div>
  8310. `;
  8311. messageAppend(htmla);
  8312. $(".copyid").off("click");
  8313. $(".copyid").on('click', () => {
  8314. var copydata = data.id;
  8315. GM_setClipboard(copydata);
  8316. messageAppend("复制成功");
  8317. });
  8318.  
  8319.  
  8320. } else if (data.dialog == 'pack' && data.name != null) {
  8321. let item = {
  8322. id: data.id,
  8323. name: data.name,
  8324. count: data.count
  8325. }
  8326. packData.push(item)
  8327. } else if (data.dialog == 'list' && data.stores != null) {
  8328. storeData = data.stores;
  8329. // packData.push(item)
  8330. } else if (data.dialog == 'list' && data.store != null) {
  8331. let scan_store = true;
  8332. let bag_remove_id = null;
  8333. let store_remove_id = null;
  8334.  
  8335. for (let i = 0; i < packData.length; i++) {
  8336. let bag_item = packData[i];
  8337. if (bag_item == null) { continue; }
  8338. if (bag_item.id == data.id) { // 道具存于背包时, 先判断数量 若数量为0 删除背包数据,若不为0 修改背包数据
  8339. scan_store = false;
  8340. let over_num = bag_item.count - data.store;
  8341. if (over_num == 0) {
  8342. // packData.splice(i, 1)
  8343. bag_remove_id = i;
  8344. } else {
  8345. packData[i].count = over_num;
  8346. }
  8347. break;
  8348. }
  8349. }
  8350. if (scan_store) { // 如果不存在于背包时, 添加数据到背包,并判断仓库数量
  8351. for (let j = 0; j < storeData.length; j++) {
  8352. let store_item = storeData[j];
  8353. if (store_item == null) { continue; }
  8354. if (store_item.id == data.storeid) {
  8355. let item = {
  8356. id: data.id,
  8357. name: store_item.name,
  8358. count: Math.abs(data.store)
  8359. }
  8360. //更新背包
  8361. packData.push(item);
  8362. break;
  8363. }
  8364.  
  8365. }
  8366. }
  8367. //计算仓库数据,若仓库存在该数据 修改其数量,若不存在 则添加,如果计算后数量为0 则删除该条数据
  8368. let found_store = true;
  8369. for (let j = 0; j < storeData.length; j++) {
  8370. let store_item = storeData[j];
  8371. if (store_item == null) { continue; }
  8372.  
  8373. if (store_item.id == data.id) {
  8374. found_store = false;
  8375. let store_count = store_item.count + data.store;
  8376. if (store_count === 0) {
  8377. // storeData.splice(j, 1)
  8378. store_remove_id = j;
  8379. } else {
  8380. storeData[j].count = store_count;
  8381. }
  8382. break;
  8383. }
  8384.  
  8385. }
  8386. if (found_store) {
  8387. for (let j = 0; j < packData.length; j++) {
  8388. let store_item = packData[j];
  8389. if (store_item == null) { continue; }
  8390. if (store_item.id === data.id) {
  8391. let item = {
  8392. id: data.stroeid,
  8393. name: store_item.name,
  8394. count: Math.abs(data.store)
  8395. }
  8396. //更新背包
  8397. storeData.push(item)
  8398. break;
  8399. }
  8400. }
  8401. }
  8402. // 移除队列数据
  8403. if (bag_remove_id != null) {
  8404. packData.splice(bag_remove_id, 1)
  8405. }
  8406. if (store_remove_id != null) {
  8407. storeData.splice(store_remove_id, 1)
  8408. }
  8409.  
  8410. } else if (data.dialog == 'pack' && data.jldesc != undefined) {
  8411. let jl = data.jldesc.match(/<(.*)>(.*)<\/.*><br\/>精炼<(hig|hic|hiy|hiz|hio|ord)>+(.*)\s</i);
  8412. if (jl) {
  8413. let l = jl[1];
  8414. let n = `<${l}>` + jl[2] + `</${l}>`;
  8415. let j = parseInt(jl[4]);
  8416. let c = 13 - j;
  8417. //let cmd = `jinglian ${data.id} ok[${c}]`
  8418. let cmd = [];
  8419. for (let i = 0; i < c; i++) {
  8420. cmd.push(`jinglian ${data.id} ok`);
  8421. }
  8422. $(".content-message pre").append(
  8423. $(`<div class="item-commands"><span class="jinglian">精炼6 => ${n}</span></div>`).click(() => WG.SendCmd(cmd)),
  8424. );
  8425. AutoScroll(".content-message");
  8426. }
  8427. }
  8428. if (data.dialog == 'score') {
  8429.  
  8430. console.log("score update");
  8431. if (!G.level && (data.level != null)) {
  8432. G.level = data.level;
  8433. console.log("欢迎" + G.level);
  8434. }
  8435. if (!G.family && (data.family != null)) {
  8436. G.pfamily = data.family;
  8437. G.family = data.family.replaceAll('派', '');
  8438. console.log(G.family);
  8439. if (G.family == "无门无") {
  8440. G.family = "武馆";
  8441. }
  8442. family = G.family;
  8443. G.score = data;
  8444. GM_setValue(roleid + "_family", G.family);
  8445. } else if (data.study_per != null) {
  8446. G.score2 = data;
  8447. }
  8448. if (data.hp && data.mp && data.pot) {
  8449. G.score = data;
  8450. }
  8451. }
  8452. });
  8453. //师门id自动刷新
  8454. WG.add_hook(["dialog", "items"], (data) => {
  8455. if (data.type == 'dialog') {
  8456. if (data.selllist) {
  8457. for (let item of data.selllist) {
  8458. let realname = item.name.replace(/<[^>]+>/g, ""); //去尖括号
  8459. let _gtype = /<([^<>]*)>/.exec(item.name)[1]
  8460. if (pgoods[realname] != undefined) {
  8461. pgoods[realname].id = item.id;
  8462. }
  8463. if (pgoods[_gtype + realname] != undefined) {
  8464. pgoods[_gtype + realname].id = item.id;
  8465. }
  8466. }
  8467. GM_setValue("goods", pgoods);
  8468. }
  8469. } else if (data.type == 'items') {
  8470. if (WG.at("扬州城-醉仙楼")) {
  8471. for (let item of data.items) {
  8472. if (item.name == '店小二') {
  8473. npcs['店小二'] = item.id;
  8474. GM_setValue("npcs", npcs);
  8475. return;
  8476. }
  8477. }
  8478. } else {
  8479. for (let item of data.items) {
  8480. if (item.name == '店小二') return;
  8481. if (npcs[item.name] != undefined) {
  8482. npcs[item.name] = item.id;
  8483.  
  8484. GM_setValue("npcs", npcs);
  8485. return;
  8486. }
  8487. }
  8488. }
  8489. }
  8490. });
  8491. WG.add_hook("msg", function (data) {
  8492.  
  8493. if (data.ch == "sys") {
  8494. var automarry = GM_getValue(roleid + "_automarry", automarry);
  8495. if (data.content.indexOf(",婚礼将在一分钟后开始。") >= 0) {
  8496. console.dir(data);
  8497. if (automarry == "开" && G.in_fight == false) {
  8498. if (stopauto || WG.at('副本')) {
  8499. let b = "<div class=\"item-commands\"><span id = 'onekeyjh'>参加喜宴</span></div>"
  8500. messageClear();
  8501. messageAppend("<hiy>点击参加喜宴</hiy>");
  8502. messageAppend(b);
  8503. $('#onekeyjh').on('click', function () {
  8504. WG.xiyan();
  8505. });
  8506. } else {
  8507. console.log("xiyan");
  8508. WG.xiyan();
  8509. }
  8510. } else if (automarry == "关" || G.in_fight == true) {
  8511. let b = "<div class=\"item-commands\"><span id = 'onekeyjh'>参加喜宴</span></div>"
  8512. messageClear();
  8513. messageAppend("<hiy>点击参加喜宴,由于未开启自动传送,或者在战斗中,需要手动传送</hiy>");
  8514. messageAppend(b);
  8515. $('#onekeyjh').on('click', function () {
  8516. WG.xiyan();
  8517. });
  8518. }
  8519. }
  8520. } else if (data.ch == "rumor") {
  8521. if (data.content.indexOf("听说") >= 0 &&
  8522. data.content.indexOf("出现在") >= 0 &&
  8523. data.content.indexOf("一带。") >= 0) {
  8524. console.dir(data);
  8525. if (autoKsBoss == "开" && G.in_fight == false) {
  8526. if (stopauto || WG.at('副本')) {
  8527. var c = "<div class=\"item-commands\"><span id = 'onekeyKsboss'>传送到boss</span></div>";
  8528. messageClear();
  8529. messageAppend("boss已出现");
  8530. messageAppend(c);
  8531. $('#onekeyKsboss').on('click', function () {
  8532. WG.kksBoss(data);
  8533. });
  8534. } else {
  8535. WG.kksBoss(data);
  8536. }
  8537. } else if (autoKsBoss == "关" || G.in_fight == true) {
  8538. var c = "<div class=\"item-commands\"><span id = 'onekeyKsboss'>传送到boss</span></div>";
  8539. messageClear();
  8540. messageAppend("<hiy>boss已出现,由于未开启自动传送,或者在战斗中,需要手动传送</hiy>");
  8541. messageAppend(c);
  8542. $('#onekeyKsboss').on('click', function () {
  8543. WG.kksBoss(data);
  8544. });
  8545. }
  8546. }
  8547. }
  8548.  
  8549. });
  8550. WG.add_hook('text', function (data) {
  8551. if (G.getitemShow) {
  8552. if (data.msg.indexOf("恭喜你得到") >= 0 ||
  8553. (data.msg.indexOf("获得") >= 0 &&
  8554. data.msg.indexOf("经验") == -1 &&
  8555. data.msg.indexOf("潜能") == -1 &&
  8556. data.msg.indexOf("提升") == -1) ||
  8557. data.msg.indexOf("你找到") == 0 ||
  8558. data.msg.indexOf("你从") == 0 ||
  8559. (data.msg.indexOf("得到") >= 0 &&
  8560. data.msg.indexOf("郭襄在得到倚天剑") == -1 &&
  8561. data.msg.indexOf("长白山得到剑谱") == -1)
  8562. ) {
  8563. messageAppend(data.msg);
  8564. }
  8565. }
  8566. // if (data.msg.indexOf("还没准备好") >= 0) {
  8567. // WG.auto_preform('stop');
  8568. // setTimeout(() => {
  8569. // WG.auto_preform();
  8570. // }, 200);
  8571. // }
  8572. if (data.msg.indexOf("说:") == -1) {
  8573. if (data.msg.indexOf("只能在战斗中使用。") >= 0 || data.msg.indexOf('这里不允许战斗') != -1 || data.msg.indexOf('没时间这么做') != -1) {
  8574. if (G.in_fight) {
  8575. G.in_fight = false;
  8576. WG.auto_preform("stop");
  8577. WG.clean_dps();
  8578.  
  8579. }
  8580. }
  8581. if (data.msg.indexOf("加油,加油!!") >= 0) {
  8582. if (G.in_fight == false) {
  8583. G.in_fight = true;
  8584. WG.auto_preform();
  8585. }
  8586. }
  8587. if (data.msg.indexOf("你的内力不够,无法使用") >= 0) {
  8588. // if (G.in_fight == false) {
  8589. // G.in_fight = true;
  8590. // }
  8591. if (G.preform_timer != null) {
  8592. WG.auto_preform("stop");
  8593. messageAppend("内力不足,停止自动出招", 1, 0)
  8594. }
  8595. }
  8596. }
  8597.  
  8598. if (data.type == 'text') {
  8599. if (data.msg.indexOf(`${role}身上东西太多了`) >= 0 || data.msg.indexOf("你身上东西太多了") >= 0 || data.msg.indexOf("你拿不下那么多东西。") >= 0) {
  8600. WG.Send("tm 友情提示:请检查是否背包已满!");
  8601. messageAppend("友情提示:请检查是否背包已满!", 1);
  8602. if (bagFull == 1) {
  8603. Beep();
  8604. } else if (bagFull == 2) {
  8605. FakerTTS.playtts(`${role},请检查是否背包已满!`);
  8606. }
  8607. if (WG.sm_state >= 0) {
  8608. WG.sm_state = -1;
  8609. $(".sm_button").text("师门(Q)");
  8610. }
  8611.  
  8612. }
  8613. if (data.msg.indexOf("长得") >= 0 && data.msg.indexOf("看起来") >= 0) {
  8614. let s = data.msg.split("\n")[0].split(" ");
  8615. let name = s[s.length - 1];
  8616. if (name.indexOf("<") >= 0) {
  8617. name = name.split("<")[0];
  8618. }
  8619. let t = new Date().getMilliseconds();
  8620. let shieldhtml = `<div class="item-commands"><span id="addshield${t}">屏蔽 ${name}</span></div>`
  8621. messageAppend(shieldhtml, 0, 0);
  8622. $(`#addshield${t}`).on('click', function () {
  8623. shield = GM_getValue('_shield', shield);
  8624. if (shield != "") {
  8625. shield = shield + "," + name;
  8626. } else {
  8627. shield = name;
  8628. }
  8629. GM_setValue('_shield', shield);
  8630. $('#shield').val(shield);
  8631. messageAppend("已屏蔽", 1, 1);
  8632. });
  8633. }
  8634.  
  8635. if (dpssakada == '开') {
  8636. if (/.*造成<.*>.*<\/.*>点.*/.test(data.msg)) {
  8637. let pdata = data.msg;
  8638. let a = pdata.split(/.*造成<wht>|.*造成<hir>|<\/wht>点|<\/hir>点/);
  8639. let b = a[2].split(/伤害|\(|</);
  8640. if (b[2] != '你') {
  8641. if (b[0] == '暴击') {//判断关键字
  8642. //critical = critical + parseInt(a[1]);
  8643. lastcri = parseInt(a[1]);
  8644.  
  8645. } else {
  8646. // pfmdps = pfmdps + parseInt(a[1]);
  8647. lastpfm = parseInt(a[1]);
  8648. }
  8649. dpslock = 1;
  8650. // messageAppend(`你造成了${addChineseUnit(pfmdps)}伤害,共计${pfmnum}次。`, 1, 1);
  8651. }
  8652. }
  8653. let dd = data.msg.split(/看起来充满活力,一点也不累。|似乎有些疲惫,但是仍然十分有活力。|看起来可能有些累了。|动作似乎开始有点不太灵光,但是仍然有条不紊。|已经一副头重脚轻的模样,正在勉力支撑著不倒下去。|看起来已经力不从心了。|已经陷入半昏迷状态,随时都可能摔倒晕去。|似乎十分疲惫,看来需要好好休息了。|气喘嘘嘘,看起来状况并不太好。|摇头晃脑、歪歪斜斜地站都站不稳,眼看就要倒在地上。/);
  8654. //console.log(dd);
  8655. if (dd.length >= 2) {
  8656. //console.log(data.msg)
  8657. if (dd[0].indexOf("你") < 0) {
  8658. if (lastcri > 0) {
  8659. critical = critical + lastcri;
  8660. criticalnum = criticalnum + 1;//暴击伤害和暴击次数增加
  8661. }
  8662. if (lastpfm > 0) {
  8663. pfmdps = pfmdps + lastpfm;
  8664. pfmnum = pfmnum + 1;
  8665. }
  8666. }
  8667.  
  8668. lastcri = 0;
  8669. lastpfm = 0;
  8670. }
  8671. }
  8672. }
  8673.  
  8674. // 获取id
  8675. let match = data.msg.match(/看起来(.*)想杀死你!/) || data.msg.match(/你扑向(.*)/);
  8676. if (Array.isArray(match) && match.length > 1) {
  8677. let name = match[1];
  8678. let room = roomData.find(room => room.name && room.name.includes(name));
  8679. if (room) {
  8680. G.fight_id = room.id;
  8681. }
  8682. }
  8683.  
  8684.  
  8685. });
  8686. WG.add_hook('dialog', function (data) {
  8687. if (data.dialog == 'jh') {
  8688. if (data.fbs) {
  8689. fb_path = data.fbs;
  8690. }
  8691. }
  8692. });
  8693. WG.add_hook(['text', 'sc'], function (message) {
  8694. if (funnycalc == '关') return;
  8695. if (message.type === "text" && /你的最大内力增加了/.test(message.msg)) {
  8696. //if中已经判断了内力相关
  8697. let x = message.msg.replace(/[^0-9]/ig, "");
  8698. let item = G.score;
  8699. let max = item.max_mp;
  8700. let limit = item.limit_mp;
  8701. let t = (limit - max) / (x * 6);//时间/分钟
  8702. let tStr = t < 60 ? `${parseInt(t)}分钟` : `${parseInt(t / 60)}小时${parseInt(t % 60)}分钟`;
  8703. let html = `<hic class="remove_nl">你的最大内力从${max}到${limit}还需${tStr}。\n</hic>`;
  8704. messageAppend(html, 0, 1);
  8705. } else if (message.type == 'sc' && message.id == G.id) {
  8706. if (message.max_mp != null && message.mp != null) {
  8707. G.score.max_mp = message.max_mp;
  8708. G.score.mp = message.mp;
  8709. }
  8710. } else if (message.type == 'text') {
  8711. if (/你获得了(.*)点经验,(.*)点潜能/.test(message.msg)) {
  8712. let x = message.msg.match(/获得了(.*)点经验,(.*)点潜能/);
  8713. G.jy += parseInt(x[1]);
  8714. G.qn += parseInt(x[2]);
  8715. let mss = `<span class="remove_jy">共计获得了${G.jy}点经验和${G.qn}点潜能。\n</span>`;
  8716. function refresh_jy(mss) {
  8717. $(".remove_jy").remove();
  8718. $(".content-message pre").append(mss);
  8719. AutoScroll(".content-message");
  8720. }
  8721. setTimeout(() => refresh_jy(mss), 200);
  8722. }
  8723. }
  8724. });
  8725. WG.add_hook("roles", function (data) {
  8726. // console.log(data);
  8727. // unsafeWindow.SS_ROLES = data.roles;
  8728. function sendRoles() {
  8729. if (originWindow.source) {
  8730. originWindow.source.postMessage(data.roles, '*');
  8731. } else {
  8732. setTimeout(sendRoles, 1000);
  8733. }
  8734. }
  8735. sendRoles();
  8736.  
  8737. setTimeout(() => {
  8738. let loginnum = getQueryVariable("login")
  8739. if (loginnum) {
  8740. let userList = $('#role_panel > ul > li.content > ul >li');
  8741. for (let uidx = 0; uidx < userList.length; uidx++) {
  8742. if (loginnum == uidx + 1) {
  8743. $(userList[uidx]).addClass("select");
  8744. } else {
  8745. $(userList[uidx]).removeClass("select");
  8746. }
  8747. }
  8748. $("li[command=SelectRole]").click()
  8749. return;
  8750. }
  8751. }, 5000);
  8752.  
  8753. });
  8754. },
  8755. configInit: function () {
  8756. family = GM_getValue(roleid + "_family", family);
  8757. automarry = GM_getValue(roleid + "_automarry", automarry);
  8758. autoKsBoss = GM_getValue(roleid + "_autoKsBoss", autoKsBoss);
  8759. ks_pfm = GM_getValue(roleid + "_ks_pfm", ks_pfm);
  8760. ks_wait = GM_getValue(roleid + "_ks_wait", ks_wait);
  8761. eqlist = GM_getValue(roleid + "_eqlist", eqlist);
  8762. skilllist = GM_getValue(roleid + "_skilllist", skilllist);
  8763. autoeq = GM_getValue(roleid + "_auto_eq", autoeq);
  8764. if (family == null) {
  8765. family = $('.role-list .select').text().substr(0, 2)
  8766. }
  8767. wudao_pfm = GM_getValue(roleid + "_wudao_pfm", wudao_pfm);
  8768. sm_loser = GM_getValue(roleid + "_sm_loser", sm_loser);
  8769. sm_any = GM_getValue(roleid + "_sm_any", sm_any);
  8770. sm_price = GM_getValue(roleid + "_sm_price", sm_price);
  8771. sm_getstore = GM_getValue(roleid + "_sm_getstore", sm_getstore);
  8772. unauto_pfm = GM_getValue(roleid + "_unauto_pfm", unauto_pfm);
  8773. auto_pfmswitch = GM_getValue(roleid + "_auto_pfmswitch", auto_pfmswitch);
  8774. auto_pfm_mode = GM_getValue(roleid + "_auto_pfm_mode", auto_pfm_mode);
  8775. auto_rewardgoto = GM_getValue(roleid + "_auto_rewardgoto", auto_rewardgoto);
  8776. busy_info = GM_getValue(roleid + "_busy_info", busy_info);
  8777. saveAddr = GM_getValue(roleid + "_saveAddr", saveAddr);
  8778. auto_updateStore = GM_getValue(roleid + "_auto_updateStore", auto_updateStore);
  8779. auto_relogin = GM_getValue(roleid + "_auto_relogin", auto_relogin);
  8780. blacklist = GM_getValue(roleid + "_blacklist", blacklist);
  8781. if (!blacklist instanceof Array) {
  8782. blacklist = blacklist.split(",")
  8783. }
  8784. getitemShow = GM_getValue(roleid + "_getitemShow", getitemShow);
  8785. if (getitemShow == "开") {
  8786. G.getitemShow = true
  8787. } else {
  8788. G.getitemShow = false
  8789. }
  8790. zml = GM_getValue(roleid + "_zml", zml);
  8791. zdy_item_store = GM_getValue(roleid + "_zdy_item_store", zdy_item_store);
  8792. zdy_item_store2 = GM_getValue(roleid + "_zdy_item_store2", zdy_item_store2);
  8793. zdy_item_lock = GM_getValue(roleid + "_zdy_item_lock", zdy_item_lock);
  8794. zdy_item_drop = GM_getValue(roleid + "_zdy_item_drop", zdy_item_drop);
  8795. zdy_item_fenjie = GM_getValue(roleid + "_zdy_item_fenjie", zdy_item_fenjie);
  8796. if (zdy_item_store) {
  8797. store_list = store_list.concat(zdy_item_store.split(","))
  8798. }
  8799. if (zdy_item_store2) {
  8800. store_list = store_list.concat(zdy_item_store2.split(","))
  8801. }
  8802. if (zdy_item_lock) {
  8803. lock_list = lock_list.concat(zdy_item_lock.split(","))
  8804. }
  8805. if (zdy_item_drop) {
  8806. drop_list = drop_list.concat(zdy_item_drop.split(","))
  8807. }
  8808. if (zdy_item_fenjie) {
  8809. fenjie_list = fenjie_list.concat(zdy_item_fenjie.split(","))
  8810. }
  8811. ztjk_item = GM_getValue(roleid + "_ztjk", ztjk_item);
  8812. if (auto_pfmswitch == "开") {
  8813. G.auto_preform = true
  8814. }
  8815. if (auto_pfm_mode == "开") {
  8816. G.auto_pfm_mode = true
  8817. }
  8818. auto_command = GM_getValue(roleid + "_auto_command", auto_command);
  8819. var unpfm = unauto_pfm.split(',');
  8820. for (var pfmname of unpfm) {
  8821. if (pfmname) blackpfm.push(pfmname)
  8822. }
  8823. welcome = GM_getValue(roleid + "_welcome", welcome);
  8824. die_str = GM_getValue(roleid + "_die_str", die_str);
  8825. shieldswitch = GM_getValue("_shieldswitch", shieldswitch);
  8826. shield = GM_getValue("_shield", shield);
  8827. shieldkey = GM_getValue("_shieldkey", shieldkey);
  8828. statehml = GM_getValue(roleid + "_statehml", statehml);
  8829. backimageurl = GM_getValue(roleid + "_backimageurl", backimageurl);
  8830. loginhml = GM_getValue(roleid + "_loginhml", loginhml);
  8831. timequestion = GM_getValue(roleid + "_timequestion", timequestion);
  8832. silence = GM_getValue(roleid + "_silence", silence);
  8833. dpssakada = GM_getValue(roleid + "_dpssakada", dpssakada);
  8834. funnycalc = GM_getValue(roleid + "_funnycalc", funnycalc);
  8835. auto_buylist = GM_getValue(roleid + "_auto_buylist", auto_buylist);
  8836. auto_skillPaperSelllist = GM_getValue(roleid + "_auto_skillPaperSelllist", auto_skillPaperSelllist);
  8837. zdyskilllist = GM_getValue(roleid + "_zdyskilllist", zdyskilllist);
  8838. zdyskills = GM_getValue(roleid + "_zdyskills", zdyskills);
  8839. bagFull = GM_getValue(roleid + "_bagFull", bagFull);
  8840. // 通知推送开关、方式、Token、Url
  8841. pushSwitch = GM_getValue("_pushSwitch", pushSwitch);
  8842. pushType = GM_getValue("_pushType", pushType);
  8843. pushToken = GM_getValue("_pushToken", pushToken);
  8844. //pushUrl = GM_getValue("_pushUrl", pushUrl);
  8845. color_select = GM_getValue("color_select", color_select);
  8846. WG.zdy_btnListInit();
  8847.  
  8848. }
  8849. };
  8850.  
  8851. var S = {
  8852. serverUrl: "https://wsmud.ii74.com",
  8853. GetJson: function (path, data) {
  8854. let res = '';
  8855. $.post(S.serverUrl + path, data, (data) => {
  8856. res = data;
  8857. });
  8858. return res;
  8859. },
  8860. shareJson: function (usernaem, json) {
  8861. $.post(S.serverUrl + "/sharejk", {
  8862. username: usernaem,
  8863. json: JSON.stringify(json)
  8864. }, (res) => {
  8865. if (res && res.code == 0) {
  8866. GM_setClipboard(res.shareid);
  8867. messageAppend("复制成功" + res.msg + ":" + res.shareid);
  8868. } else {
  8869. messageAppend("失败了" + res.msg);
  8870. }
  8871. })
  8872. },
  8873. getShareJson: function (id, callback) {
  8874. $.post(S.serverUrl + "/getjk", {
  8875. shareid: id
  8876. }, (res) => {
  8877. if (res && res.code == 0) {
  8878. callback(res);
  8879. } else {
  8880. messageAppend("失败了" + res.msg);
  8881. }
  8882. });
  8883. },
  8884. getUserConfig: function (id, callback) {
  8885. $.get(S.serverUrl + "/User/Load?id=" + id, (res) => {
  8886. if (res && res != "") {
  8887. callback(res);
  8888. } else {
  8889. messageAppend("失败了");
  8890. }
  8891. });
  8892. },
  8893. uploadUserConfig: function (id, data, callback) {
  8894. $.post(S.serverUrl + "/User/Backup", {
  8895. id: id,
  8896. data: JSON.stringify(data)
  8897. }, (res) => {
  8898. if (res && res == "true") {
  8899. callback(res);
  8900. } else {
  8901. messageAppend("失败了,或配置已存在");
  8902. }
  8903. });
  8904. }
  8905.  
  8906. };
  8907. var FakerTTS = {
  8908.  
  8909. playtts: function (text) {
  8910. try {
  8911. var msg = new SpeechSynthesisUtterance(text);
  8912. msg.lang = 'zh';
  8913. msg.voice = speechSynthesis.getVoices().filter(function (voice) {
  8914. return voice.name == 'Whisper';
  8915. })[0];
  8916. speechSynthesis.speak(msg);
  8917. } catch (e) {
  8918. try {
  8919. android.speak(text);
  8920. } catch (ex) {
  8921. console.log('这个真没有.')
  8922. }
  8923.  
  8924. }
  8925. }
  8926. };
  8927. function Beep() {
  8928. document.getElementById("beep-alert").play();
  8929. };
  8930. function Push(text) {
  8931. if (text) {
  8932. if (pushSwitch != '开' || pushType == null || pushToken == null) {
  8933. messageAppend("通知功能未开启或设置不完整,请在 右键菜单-设置 中设置开启。", 1);
  8934. return;
  8935. }
  8936. switch (String(pushType)) {
  8937. //Server酱
  8938. case "0":
  8939. $.post(`https://sctapi.ftqq.com/${pushToken}.send?title=${text}`);
  8940. break;
  8941. //Bark iOS
  8942. case "1":
  8943. $.post(`https://api.day.app/${pushToken}/武神传说/${encodeURIComponent(text)}`);
  8944. break;
  8945. //PushPlus
  8946. case "2":
  8947. var pushJosn = { "token": pushToken, "title": "武神传说", "content": text };
  8948. $.ajaxSetup({ contentType: "application/json; charset=utf-8" });
  8949. $.post(`http://www.pushplus.plus/send/`, JSON.stringify(pushJosn));
  8950. break;
  8951. //飞书机器人
  8952. case "3":
  8953. var pushJosn = { "msg_type": "text", "content": { "text": text } };
  8954. $.ajaxSetup({ contentType: "application/json; charset=utf-8" });
  8955. $.post(`https://open.feishu.cn/open-apis/bot/v2/hook/${pushToken}`, JSON.stringify(pushJosn));
  8956. break;
  8957. //Qmsg私聊
  8958. case "4":
  8959. $.post(`https://qmsg.zendee.cn/send/${pushToken}?msg=${text}`);
  8960. break;
  8961. //Qmsg群聊
  8962. case "5":
  8963. $.post(`https://qmsg.zendee.cn/group/${pushToken}?msg=${text}`);
  8964. break;
  8965. }
  8966. }
  8967. };
  8968. class MusicBox {
  8969. constructor(options) {
  8970. let defaults = {
  8971. loop: false,
  8972. musicText: '',
  8973. autoplay: false,
  8974. type: 'sine',
  8975. duration: 2
  8976. };
  8977. this.arrFrequency = [262, 294, 330, 349, 392, 440, 494, 523, 587, 659, 698, 784, 880, 988, 1047, 1175, 1319, 1397, 1568, 1760, 1967];
  8978. this.arrNotes = ['·1', '·2', '·3', '·4', '·5', '·6', '·7', '1', '2', '3', '4', '5', '6', '7', '1·', '2·', '3·', '4·', '5·', '6·', '7·'];
  8979. this.opts = Object.assign(defaults, options);
  8980. this.audioCtx = new (window.AudioContext || window.webkitAudioContext)();
  8981. this.opts.autoplay && this.playMusic(this.opts.musicText, this.opts.autoplay)
  8982. }
  8983. createSound(freq) {
  8984. let oscillator = this.audioCtx.createOscillator();
  8985. let gainNode = this.audioCtx.createGain();
  8986. oscillator.connect(gainNode);
  8987. gainNode.connect(this.audioCtx.destination);
  8988. oscillator.type = this.opts.type;
  8989. oscillator.frequency.value = freq;
  8990. gainNode.gain.setValueAtTime(0, this.audioCtx.currentTime);
  8991. gainNode.gain.linearRampToValueAtTime(1, this.audioCtx.currentTime + 0.01);
  8992. oscillator.start(this.audioCtx.currentTime);
  8993. gainNode.gain.exponentialRampToValueAtTime(0.001, this.audioCtx.currentTime + this.opts.duration);
  8994. oscillator.stop(this.audioCtx.currentTime + this.opts.duration)
  8995. }
  8996. createMusic(note) {
  8997. let index = this.arrNotes.indexOf(note);
  8998. if (index !== -1) {
  8999. this.createSound(this.arrFrequency[index])
  9000. }
  9001. }
  9002. pressBtn(i) {
  9003. this.createSound(this.arrFrequency[i])
  9004. }
  9005. playMusic(musicText, speed = 2) {
  9006. let i = 0,
  9007. musicArr = musicText.split(' ');
  9008. let timer = setInterval(() => {
  9009. try {
  9010. let n = this.arrNotes.indexOf(musicArr[i]);
  9011. if (musicArr[i] !== '-' && musicArr[i] !== '0') {
  9012. this.pressBtn(n)
  9013. }
  9014. i++;
  9015. if (i >= musicArr.length) {
  9016. this.opts.loop ? i = 0 : clearInterval(timer)
  9017. }
  9018. } catch (e) {
  9019. alert('请输入正确的乐谱!');
  9020. clearInterval(timer)
  9021. }
  9022. }, 1000 / speed);
  9023. return timer
  9024. }
  9025. };
  9026. var originWindow = {};
  9027. $(document).ready(function () {
  9028. $('head').append('<link href="https://s4.zstatic.net/ajax/libs/jquery-contextmenu/3.0.0-beta.2/jquery.contextMenu.min.css" rel="stylesheet">');
  9029. $('head').append('<link href="https://s4.zstatic.net/ajax/libs/layer/2.3/skin/layer.css" rel="stylesheet">');
  9030. $('head').append('<link href="https://s4.zstatic.net/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" rel="stylesheet">');
  9031. $('body').append(UI.codeInput);
  9032. $("body").append(
  9033. $(`<audio id="beep-alert" preload="auto"></audio>`).append(`<source src="https://cdn.jsdelivr.net/gh/mapleobserver/wsmud-script/plugins/complete.mp3" type="audio/mpeg">`)
  9034. );
  9035.  
  9036.  
  9037.  
  9038. setInterval(() => {
  9039. var h = '';
  9040. if (parseInt(Math.random() * 10) < 3) {
  9041. h = "<hir>【插件】有任何问题欢迎加入 武神传说-仙界 367657589 进行技术交流,脚本讨论。\n<hir>"
  9042. } else if (parseInt(Math.random() * 10) < 10) {
  9043. h = "<hir>【插件】欢迎访问 https://emeisuqing.github.io/wsmud.old/ 苏轻 助你武神之路上更加轻松愉快。\n<hir>";
  9044. }
  9045. parseInt(Math.random() * 10) < 2 ? $('.channel pre').append(h) : console.log("");
  9046. $(".channel")[0].scrollTop = 99999;
  9047. }, 320 * 1000);
  9048.  
  9049.  
  9050.  
  9051. KEY.init();
  9052. WG.init();
  9053. GI.init();
  9054. unsafeWindow.WG = WG;
  9055. unsafeWindow.T = T;
  9056. unsafeWindow.L = L;
  9057. unsafeWindow.G = G;
  9058. unsafeWindow.messageClear = messageClear;
  9059. unsafeWindow.messageAppend = messageAppend;
  9060. unsafeWindow.send_cmd = send_cmd;
  9061. unsafeWindow.roomData = roomData;
  9062. unsafeWindow.MusicBox = MusicBox;
  9063. unsafeWindow.FakerTTS = FakerTTS;
  9064. unsafeWindow.Beep = Beep;
  9065. unsafeWindow.Push = Push;
  9066. unsafeWindow.WSStore = store;
  9067. unsafeWindow.imgShow = imgShow;
  9068.  
  9069.  
  9070.  
  9071. window.addEventListener("message", receiveMessage, false);
  9072. function receiveMessage(event) {
  9073. originWindow = event;
  9074. var origin = event.origin;
  9075. var data = event.data;
  9076. if (String(data).indexOf("denglu") >= 0) {
  9077. if (role != undefined) { return; }
  9078. console.log(data);
  9079. let userName = data.split(" ")[1];
  9080. let userList = $('#role_panel > ul > li.content > ul >li');
  9081. for (let user of userList) {
  9082. if (user.innerText.indexOf(userName) >= 0) {
  9083. $(user).addClass("select");
  9084. } else {
  9085. $(user).removeClass("select");
  9086. }
  9087. }
  9088. $("li[command=SelectRole]").click()
  9089. return;
  9090. }
  9091. try {
  9092. if (JSON.parse(data) instanceof Object) {
  9093. return;
  9094. }
  9095. } catch (error) {
  9096. console.log("Run at message");
  9097. }
  9098. if (typeof data == 'string') {
  9099. //包含setImmediate 跳过
  9100. if(data.indexOf("setImmediate") >= 0){
  9101. return;
  9102. }
  9103. if (data === '挖矿' || data === '修炼') {
  9104. WG.zdwk();
  9105. } else if (data === '日常') {
  9106. WG.SendCmd("$daily");
  9107. } else if (data === '挂机') {
  9108. WG.SendCmd("stopstate");
  9109. } else {
  9110. if (data.split("\n")[0].indexOf("//") >= 0) {
  9111. if (unsafeWindow && unsafeWindow.ToRaid) {
  9112. ToRaid.perform(data);
  9113. }
  9114. } else if (data.split("\n")[0].indexOf("#js") >= 0) {
  9115. var jscode = data.split("\n");
  9116. jscode.baoremove(0)
  9117. eval(jscode.join(""));
  9118. } else {
  9119. WG.SendCmd(data);
  9120. }
  9121. }
  9122. }
  9123. }
  9124. $('.room-name').on('click', (e) => {
  9125. e.preventDefault();
  9126. $('.container').contextMenu({
  9127. x: 1,
  9128. y: 1
  9129. });
  9130. });
  9131. function makeTp(mp = 0) {
  9132.  
  9133. var mptp = {
  9134. "豪宅": "住房",
  9135. "衙门": "扬州城-衙门正厅",
  9136. "镖局": "扬州城-镖局正厅",
  9137. "当铺": "扬州城-当铺",
  9138. "擂台": "扬州城-擂台",
  9139. "药铺": "扬州城-药铺",
  9140. "书院": "扬州城-书院"
  9141. }
  9142. if (mp == 1) {
  9143. mptp = {
  9144. "武当": "武当派-广场",
  9145. "少林": "少林派-广场",
  9146. "华山": "华山派-镇岳宫",
  9147. "峨眉": "峨眉派-金顶",
  9148. "逍遥": "逍遥派-青草坪",
  9149. "丐帮": "丐帮-树洞内部",
  9150. "武馆": "扬州城-扬州武馆",
  9151. "杀手楼": "杀手楼-大门"
  9152. }
  9153. let myDate = new Date();
  9154. if (myDate.getHours() >= 17) {
  9155. mptp = {
  9156. "武当": "武当派-后山小院",
  9157. "少林": "少林派-方丈楼",
  9158. "华山": "华山派-客厅",
  9159. "峨眉": "峨眉派-清修洞",
  9160. "逍遥": "逍遥派-地下石室",
  9161. "丐帮": "丐帮-林间小屋",
  9162. "武馆": "扬州城-扬州武馆",
  9163. "杀手楼": "杀手楼-大门"
  9164. }
  9165. }
  9166. }
  9167. var subItems = {};
  9168.  
  9169. for (let item in mptp) {
  9170. subItems[item] = { name: item, callback: function () { WG.go(mptp[item]); } }
  9171. }
  9172. if (mp == 0) {
  9173. subItems['wmls'] = { name: "武庙疗伤", callback: function () { WG.go("扬州城-武庙"); WG.Send("liaoshang"); } }
  9174. }
  9175. var dfd = jQuery.Deferred();
  9176. setTimeout(function () {
  9177. dfd.resolve(subItems);
  9178. }, 20);
  9179. return dfd.promise();
  9180. }
  9181.  
  9182. function createSomeMenu() {
  9183. return {
  9184. items: {
  9185. "关闭自动": {
  9186. name: "关闭自动",
  9187. visible: function (key, opt) {
  9188. return timer != 0;
  9189. },
  9190. callback: function (key, opt) {
  9191. WG.timer_close();
  9192. },
  9193. },
  9194. "自动": {
  9195. name: "自动",
  9196. visible: function (key, opt) {
  9197. return timer == 0;
  9198. },
  9199. "items": {
  9200. "自动武道": {
  9201. name: "自动武道",
  9202. callback: function (key, opt) {
  9203. WG.wudao_auto();
  9204. },
  9205. },
  9206. "自动小树林": {
  9207. name: "自动小树林",
  9208. callback: function (key, opt) {
  9209. WG.grove_auto();
  9210. }
  9211. },
  9212. "自动整理并清包": {
  9213. name: "自动整理并清包",
  9214. callback: function (key, opt) {
  9215. WG.sell_all();
  9216. }
  9217. },
  9218. "回收秘籍残页": {
  9219. name: "回收秘籍残页",
  9220. callback: function (key, opt) {
  9221. WG.zxBuy();
  9222. }
  9223. },
  9224. "自动比试": {
  9225. name: "自动比试",
  9226. visible: function (key, opt) {
  9227. return WG.fight_listener == undefined;
  9228. },
  9229. callback: function (key, opt) {
  9230. WG.auto_fight();
  9231. },
  9232. },
  9233. "关闭比试": {
  9234. name: "关闭比试",
  9235. visible: function (key, opt) {
  9236. return WG.fight_listener != undefined;
  9237. },
  9238. callback: function (key, opt) {
  9239. WG.auto_fight();
  9240. },
  9241. },
  9242. "自动使用道具": {
  9243. name: "自动使用道具",
  9244. callback: function (key, opt) {
  9245. WG.auto_useitem();
  9246. },
  9247. },
  9248. "自动研药": {
  9249. name: "自动研药",
  9250. callback: function (key, opt) {
  9251. WG.auto_Development_medicine();
  9252. },
  9253. },
  9254. "一键日常": {
  9255. name: "一键日常",
  9256. callback: function (key, opt) {
  9257. WG.oneKeyDaily();
  9258. },
  9259. },
  9260. "一键请安": {
  9261. name: "一键请安",
  9262. callback: function (key, opt) {
  9263. WG.oneKeyQA();
  9264. },
  9265. },
  9266. "一键扫荡": {
  9267. name: "一键扫荡",
  9268. callback: function (key, opt) {
  9269. WG.oneKeySD();
  9270. },
  9271. },
  9272.  
  9273. "一键当铺购买": {
  9274. name: "一键当铺购买",
  9275. callback: function (key, opt) {
  9276. WG.tnBuy();
  9277. },
  9278. },
  9279. },
  9280. },
  9281. "换装设置": {
  9282. name: "换装设置",
  9283. callback: function (key, opt) {
  9284. WG.eqhelperui();
  9285. },
  9286. },
  9287. "换装": {
  9288. name: "换装",
  9289. items: WG.eqloader()
  9290. },
  9291. "自命令,自定监控": {
  9292. name: "自命令,自定监控",
  9293. callback: function (key, opt) {
  9294. WG.zmlztjk();
  9295. },
  9296. },
  9297. "手动喜宴": {
  9298. name: "手动喜宴",
  9299. callback: function (key, opt) {
  9300. console.log("当前自动状态:" + stopauto);
  9301. WG.xiyan();
  9302. },
  9303. },
  9304. "快捷传送": {
  9305. name: "常用地点",
  9306. "items": makeTp(0)
  9307. },
  9308. "门派传送": {
  9309. name: "门派传送",
  9310. "items": makeTp(1)
  9311. },
  9312. "打开仓库": {
  9313. name: "打开仓库",
  9314. callback: function (key, opt) {
  9315. if (WG.at("扬州城-钱庄")) {
  9316. WG.Send("store");
  9317. } else {
  9318. WG.go("扬州城-钱庄");
  9319. }
  9320. },
  9321. },
  9322. "切换菜单": {
  9323. name: "切换菜单",
  9324. callback: function (key, opt) {
  9325. let p = 'on'
  9326. if (inzdy_btn) {
  9327. p = 'off'
  9328. }
  9329. WG.zdy_btnshow(p);
  9330. },
  9331. },
  9332. "简单工具": {
  9333. name: "简单工具",
  9334. callback: function (key, opt) {
  9335. WG.calc();
  9336. },
  9337. },
  9338. "调试BOSS": {
  9339. name: "调试BOSS",
  9340. visible: false,
  9341. callback: function (key, opt) {
  9342. WG.kksBoss({
  9343. content: "听说呼符出现在逍遥派-地下石室一带。"
  9344. });
  9345. },
  9346. },
  9347. "流程菜单Raid.js": {
  9348. name: "流程菜单Raid.js",
  9349. callback: function (key, opt) {
  9350. if (unsafeWindow && unsafeWindow.ToRaid) {
  9351. unsafeWindow.ToRaid.menu();
  9352. } else {
  9353. messageAppend("插件未安装,请访问 https://greasyfork.org/zh-CN/scripts/375851-wsmud-raid 下载并安装");
  9354. window.open("https://greasyfork.org/zh-CN/scripts/375851-wsmud-raid ", '_blank').location;
  9355. }
  9356. }
  9357. },
  9358. "设置": {
  9359. name: "设置",
  9360. callback: function (key, opt) {
  9361. WG.setting();
  9362. },
  9363. },
  9364. "打开面板": {
  9365. name: "打开面板",
  9366. visible: function (key, opt) {
  9367. return $('.WG_log').css('display') == 'none';
  9368. },
  9369. callback: function (key, opt) {
  9370. WG.showhideborad();
  9371. },
  9372. },
  9373. "关闭面板": {
  9374. name: "关闭面板",
  9375. visible: function (key, opt) {
  9376. return $('.WG_log').css('display') != 'none';
  9377. },
  9378. callback: function (key, opt) {
  9379. WG.showhideborad();
  9380. },
  9381. }, "打开快捷操作栏": {
  9382. name: "打开快捷操作栏",
  9383. visible: function (key, opt) {
  9384. return $('.WG_button').css('display') == 'none';
  9385. },
  9386. callback: function (key, opt) {
  9387. WG.showhidebtn();
  9388. },
  9389. },
  9390. "关闭快捷操作栏": {
  9391. name: "关闭快捷操作栏",
  9392. visible: function (key, opt) {
  9393. return $('.WG_button').css('display') != 'none';
  9394. },
  9395. callback: function (key, opt) {
  9396. WG.showhidebtn();
  9397. },
  9398. }
  9399. }
  9400. }
  9401. }
  9402. $.contextMenu({
  9403. selector: '.container',
  9404. build: function ($trigger, e) {
  9405. //从 trigger 中获取动态创建的菜单项及回调
  9406. return createSomeMenu();
  9407. }
  9408.  
  9409. });
  9410. });
  9411. })();