Greasy Fork 还支持 简体中文。

wsmud_pluginss

武神传说 MUD

  1. // ==UserScript==
  2. // @name wsmud_pluginss
  3. // @namespace cqv1
  4. // @version 0.0.31.130
  5. // @date 01/07/2018
  6. // @modified 02/01/2019
  7. // @homepage https://greasyfork.org/zh-CN/scripts/374933
  8. // @description 武神传说 MUD
  9. // @author fjcqv(源程序) & zhzhwcn(提供websocket监听)& knva(做了一些微小的贡献) &Bob.cn(raid.js作者)
  10. // @match http://game.wsmud.com/*
  11. // @match http://www.wsmud.com/*
  12. // @run-at document-start
  13. // @require https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js
  14. // @require https://cdn.bootcss.com/jquery-contextmenu/3.0.0-beta.2/jquery.contextMenu.min.js
  15. // @grant unsafeWindow
  16. // @grant GM_addStyle
  17. // @grant GM_getValue
  18. // @grant GM_setValue
  19. // @grant GM_setClipboard
  20.  
  21. // ==/UserScript==
  22.  
  23. (function () {
  24. 'use strict';
  25. var updateinfo = "🍋增加 enapfm 监控,用于监控单个技能cd \n优化移动端输入体验 \n 增加$eqw 命令,可以在装备穿完后继续执行命令\n增加本人血量监控,请使用hp百分比|mp百分比 的方式设置关键字,有问题请反馈";
  26.  
  27. Array.prototype.baoremove = function (dx) {
  28. if (isNaN(dx) || dx > this.length) {
  29. return false;
  30. }
  31. this.splice(dx, 1);
  32. }
  33.  
  34. if (WebSocket) {
  35. console.log('插件可正常运行,Plugins can run normally');
  36.  
  37. function show_msg(msg) {
  38. ws_on_message({data: msg});
  39. }
  40. var _ws = WebSocket,
  41. ws, ws_on_message;
  42. unsafeWindow.WebSocket = function (uri) {
  43. ws = new _ws(uri);
  44. };
  45. unsafeWindow.WebSocket.prototype = {
  46. CONNECTING: _ws.CONNECTING,
  47. OPEN: _ws.OPEN,
  48. CLOSING: _ws.CLOSING,
  49. CLOSED: _ws.CLOSED,
  50. get url() { return ws.url;},
  51. get protocol() {return ws.protocol;},
  52. get readyState() {return ws.readyState;},
  53. get bufferedAmount() {return ws.bufferedAmount;},
  54. get extensions() {return ws.extensions;},
  55. get binaryType() {return ws.binaryType;},
  56. set binaryType(t) {ws.binaryType = t;},
  57. get onopen() {return ws.onopen;},
  58. set onopen(fn) {ws.onopen = fn;},
  59. get onmessage() {return ws.onmessage;},
  60. set onmessage(fn) {
  61. ws_on_message = fn;
  62. ws.onmessage = WG.receive_message;
  63. },
  64. get onclose() {return ws.onclose;},
  65. set onclose(fn) {ws.onclose = fn;},
  66. get onerror() {return ws.onerror;},
  67. set onerror(fn) {ws.onerror = fn;},
  68. send: function (text) {
  69. if (G.cmd_echo) {
  70. show_msg('<hiy>' + text + '</hiy>');
  71. }
  72. ws.send(text);
  73. },
  74. close: function () {ws.close();}
  75. };
  76. } else {
  77. console.log("插件不可运行,请打开'https://greasyfork.org/zh-CN/forum/discussion/41547/x',按照操作步骤进行操作,Plugins are not functioning properly.plase open https://greasyfork.org/zh-CN/forum/discussion/41547/x");
  78. }
  79. var L = {
  80. msg: function (msg) {
  81. if (layer) {
  82. layer.msg(msg, {
  83. offset: '50%',
  84. shift: 5
  85. })
  86. } else {
  87. messageAppend(msg);
  88. }
  89. },
  90. isMobile: function () {
  91. var ua = navigator.userAgent;
  92. var ipad = ua.match(/(iPad).*OS\s([\d_]+)/),
  93. isIphone = !ipad && ua.match(/(iPhone\sOS)\s([\d_]+)/),
  94. isAndroid = ua.match(/(Android)\s+([\d.]+)/),
  95. isMobile = isIphone || isAndroid;
  96. return isMobile;
  97. }
  98. };
  99. var roomItemSelectIndex = -1;
  100. var timer = 0;
  101. var cnt = 0;
  102. var zb_npc;
  103. var zb_place;
  104. var next = 0;
  105. var roomData = [];
  106. var blacklist = "";
  107. var blackpfm = [];
  108. var needfind = {
  109. "武当派-林间小径": ["go south"],
  110. "峨嵋派-走廊": ["go north", "go south;go south", "go north;go east;go east"],
  111. "丐帮-暗道": ["go east", "go east;go east", "go east"],
  112. "逍遥派-林间小道": ["go west;go north", "go south;go south", "go north;go west"],
  113. "少林派-竹林": ["go north"],
  114. "逍遥派-地下石室": ["go up"],
  115. "逍遥派-木屋": ["go south;go south;go south;go south"]
  116. };
  117. var store_list = [];
  118. var goods = {
  119. "米饭": {
  120. "id": null,
  121. "sales": "店小二",
  122. place: "扬州城-醉仙楼"
  123. },
  124. "包子": {
  125. "id": null,
  126. "sales": "店小二",
  127. place: "扬州城-醉仙楼"
  128. },
  129. "鸡腿": {
  130. "id": null,
  131. "sales": "店小二",
  132. place: "扬州城-醉仙楼"
  133. },
  134. "面条": {
  135. "id": null,
  136. "sales": "店小二",
  137. place: "扬州城-醉仙楼"
  138. },
  139. "扬州炒饭": {
  140. "id": null,
  141. "sales": "店小二",
  142. place: "扬州城-醉仙楼"
  143. },
  144. "米酒": {
  145. "id": null,
  146. "sales": "店小二",
  147. place: "扬州城-醉仙楼"
  148. },
  149. "花雕酒": {
  150. "id": null,
  151. "sales": "店小二",
  152. place: "扬州城-醉仙楼"
  153. },
  154. "女儿红": {
  155. "id": null,
  156. "sales": "店小二",
  157. place: "扬州城-醉仙楼"
  158. },
  159. "醉仙酿": {
  160. "id": null,
  161. "sales": "店小二",
  162. place: "扬州城-醉仙楼"
  163. },
  164. "神仙醉": {
  165. "id": null,
  166. "sales": "店小二",
  167. place: "扬州城-醉仙楼"
  168. },
  169. //扬州城-杂货铺
  170. "布衣": {
  171. "id": null,
  172. "sales": "杂货铺老板 杨永福",
  173. place: "扬州城-杂货铺"
  174. },
  175. "钢刀": {
  176. "id": null,
  177. "sales": "杂货铺老板 杨永福",
  178. place: "扬州城-杂货铺"
  179. },
  180. "木棍": {
  181. "id": null,
  182. "sales": "杂货铺老板 杨永福",
  183. place: "扬州城-杂货铺"
  184. },
  185. "英雄巾": {
  186. "id": null,
  187. "sales": "杂货铺老板 杨永福",
  188. place: "扬州城-杂货铺"
  189. },
  190. "布鞋": {
  191. "id": null,
  192. "sales": "杂货铺老板 杨永福",
  193. place: "扬州城-杂货铺"
  194. },
  195. "铁戒指": {
  196. "id": null,
  197. "sales": "杂货铺老板 杨永福",
  198. place: "扬州城-杂货铺"
  199. },
  200. "簪子": {
  201. "id": null,
  202. "sales": "杂货铺老板 杨永福",
  203. place: "扬州城-杂货铺"
  204. },
  205. "长鞭": {
  206. "id": null,
  207. "sales": "杂货铺老板 杨永福",
  208. place: "扬州城-杂货铺"
  209. },
  210. "钓鱼竿": {
  211. "id": null,
  212. "sales": "杂货铺老板 杨永福",
  213. place: "扬州城-杂货铺"
  214. },
  215. "鱼饵": {
  216. "id": null,
  217. "sales": "杂货铺老板 杨永福",
  218. place: "扬州城-杂货铺"
  219. },
  220.  
  221. //扬州城-打铁铺
  222. "铁剑": {
  223. "id": null,
  224. "sales": "铁匠铺老板 铁匠",
  225. place: "扬州城-打铁铺"
  226. },
  227. "钢刀": {
  228. "id": null,
  229. "sales": "铁匠铺老板 铁匠",
  230. place: "扬州城-打铁铺"
  231. },
  232. "铁棍": {
  233. "id": null,
  234. "sales": "铁匠铺老板 铁匠",
  235. place: "扬州城-打铁铺"
  236. },
  237. "铁杖": {
  238. "id": null,
  239. "sales": "铁匠铺老板 铁匠",
  240. place: "扬州城-打铁铺"
  241. },
  242. "飞镖": {
  243. "id": null,
  244. "sales": "铁匠铺老板 铁匠",
  245. place: "扬州城-打铁铺"
  246. },
  247. "铁镐": {
  248. "id": null,
  249. "sales": "铁匠铺老板 铁匠",
  250. place: "扬州城-打铁铺"
  251. },
  252.  
  253. //扬州城-药铺
  254. "金创药": {
  255. "id": null,
  256. "sales": "药铺老板 平一指",
  257. place: "扬州城-药铺"
  258. },
  259. "引气丹": {
  260. "id": null,
  261. "sales": "药铺老板 平一指",
  262. place: "扬州城-药铺"
  263. },
  264. "养精丹": {
  265. "id": null,
  266. "sales": "药铺老板 平一指",
  267. place: "扬州城-药铺"
  268. },
  269. };
  270. var equip = {"铁镐": 0};
  271. var npcs = {"店小二": 0};
  272. var place = {
  273. "住房": "jh fam 0 start;go west;go west;go north;go enter",
  274. "练功房": "jh fam 0 start;go west;go west;go north;go enter;go west",
  275. "仓库": "jh fam 0 start;go north;go west;store",
  276. "扬州城-广场": "jh fam 0 start",
  277. "扬州城-醉仙楼": "jh fam 0 start;go north;go north;go east",
  278. "扬州城-杂货铺": "jh fam 0 start;go east;go south",
  279. "扬州城-打铁铺": "jh fam 0 start;go east;go east;go south",
  280. "扬州城-药铺": "jh fam 0 start;go east;go east;go north",
  281. "扬州城-衙门正厅": "jh fam 0 start;go west;go north;go north",
  282. "扬州城-镖局正厅": "jh fam 0 start;go west;go west;go south;go south",
  283. "扬州城-矿山": "jh fam 0 start;go west;go west;go west;go west",
  284. "扬州城-喜宴": "jh fam 0 start;go north;go north;go east;go up",
  285. "扬州城-擂台": "jh fam 0 start;go west;go south",
  286. "扬州城-当铺": "jh fam 0 start;go south;go east",
  287. "扬州城-帮派": "jh fam 0 start;go south;go south;go east",
  288. "扬州城-扬州武馆": "jh fam 0 start;go south;go south;go west",
  289. "扬州城-武庙": "jh fam 0 start;go north;go north;go west",
  290. "武当派-广场": "jh fam 1 start;",
  291. "武当派-三清殿": "jh fam 1 start;go north",
  292. "武当派-石阶": "jh fam 1 start;go west",
  293. "武当派-练功房": "jh fam 1 start;go west;go west",
  294. "武当派-太子岩": "jh fam 1 start;go west;go northup",
  295. "武当派-桃园小路": "jh fam 1 start;go west;go northup;go north",
  296. "武当派-舍身崖": "jh fam 1 start;go west;go northup;go north;go east",
  297. "武当派-南岩峰": "jh fam 1 start;go west;go northup;go north;go west",
  298. "武当派-乌鸦岭": "jh fam 1 start;go west;go northup;go north;go west;go northup",
  299. "武当派-五老峰": "jh fam 1 start;go west;go northup;go north;go west;go northup;go northup",
  300. "武当派-虎头岩": "jh fam 1 start;go west;go northup;go north;go west;go northup;go northup;go northup",
  301. "武当派-朝天宫": "jh fam 1 start;go west;go northup;go north;go west;go northup;go northup;go northup;go north",
  302. "武当派-三天门": "jh fam 1 start;go west;go northup;go north;go west;go northup;go northup;go northup;go north;go north",
  303. "武当派-紫金城": "jh fam 1 start;go west;go northup;go north;go west;go northup;go northup;go northup;go north;go north;go north",
  304. "武当派-林间小径": "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",
  305. "武当派-后山小院": "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",
  306. "少林派-广场": "jh fam 2 start;",
  307. "少林派-山门殿": "jh fam 2 start;go north",
  308. "少林派-东侧殿": "jh fam 2 start;go north;go east",
  309. "少林派-西侧殿": "jh fam 2 start;go north;go west",
  310. "少林派-天王殿": "jh fam 2 start;go north;go north",
  311. "少林派-大雄宝殿": "jh fam 2 start;go north;go north;go northup",
  312. "少林派-钟楼": "jh fam 2 start;go north;go north;go northeast",
  313. "少林派-鼓楼": "jh fam 2 start;go north;go north;go northwest",
  314. "少林派-后殿": "jh fam 2 start;go north;go north;go northwest;go northeast",
  315. "少林派-练武场": "jh fam 2 start;go north;go north;go northwest;go northeast;go north",
  316. "少林派-罗汉堂": "jh fam 2 start;go north;go north;go northwest;go northeast;go north;go east",
  317. "少林派-般若堂": "jh fam 2 start;go north;go north;go northwest;go northeast;go north;go west",
  318. "少林派-方丈楼": "jh fam 2 start;go north;go north;go northwest;go northeast;go north;go north",
  319. "少林派-戒律院": "jh fam 2 start;go north;go north;go northwest;go northeast;go north;go north;go east",
  320. "少林派-达摩院": "jh fam 2 start;go north;go north;go northwest;go northeast;go north;go north;go west",
  321. "少林派-竹林": "jh fam 2 start;go north;go north;go northwest;go northeast;go north;go north;go north;go north",
  322. "少林派-藏经阁": "jh fam 2 start;go north;go north;go northwest;go northeast;go north;go north;go north;go west",
  323. "少林派-达摩洞": "jh fam 2 start;go north;go north;go northwest;go northeast;go north;go north;go north;go north;go north",
  324. "华山派-镇岳宫": "jh fam 3 start;",
  325. "华山派-苍龙岭": "jh fam 3 start;go eastup",
  326. "华山派-舍身崖": "jh fam 3 start;go eastup;go southup",
  327. "华山派-峭壁": "jh fam 3 start;go eastup;go southup;jumpdown",
  328. "华山派-山谷": "jh fam 3 start;go eastup;go southup;jumpdown;go southup",
  329. "华山派-山间平地": "jh fam 3 start;go eastup;go southup;jumpdown;go southup;go south",
  330. "华山派-林间小屋": "jh fam 3 start;go eastup;go southup;jumpdown;go southup;go south;go east",
  331. "华山派-玉女峰": "jh fam 3 start;go westup",
  332. "华山派-玉女祠": "jh fam 3 start;go westup;go west",
  333. "华山派-练武场": "jh fam 3 start;go westup;go north",
  334. "华山派-练功房": "jh fam 3 start;go westup;go north;go east",
  335. "华山派-客厅": "jh fam 3 start;go westup;go north;go north",
  336. "华山派-偏厅": "jh fam 3 start;go westup;go north;go north;go east",
  337. "华山派-寝室": "jh fam 3 start;go westup;go north;go north;go north",
  338. "华山派-玉女峰山路": "jh fam 3 start;go westup;go south",
  339. "华山派-玉女峰小径": "jh fam 3 start;go westup;go south;go southup",
  340. "华山派-思过崖": "jh fam 3 start;go westup;go south;go southup;go southup",
  341. "华山派-山洞": "jh fam 3 start;go westup;go south;go southup;go southup;break bi;go enter",
  342. "华山派-长空栈道": "jh fam 3 start;go westup;go south;go southup;go southup;break bi;go enter;go westup",
  343. "华山派-落雁峰": "jh fam 3 start;go westup;go south;go southup;go southup;break bi;go enter;go westup;go westup",
  344. "华山派-华山绝顶": "jh fam 3 start;go westup;go south;go southup;go southup;break bi;go enter;go westup;go westup;jumpup",
  345. "峨嵋派-金顶": "jh fam 4 start",
  346. "峨嵋派-庙门": "jh fam 4 start;go west",
  347. "峨嵋派-广场": "jh fam 4 start;go west;go south",
  348. "峨嵋派-走廊": "jh fam 4 start;go west;go south;go west",
  349. "峨嵋派-休息室": "jh fam 4 start;go west;go south;go east;go south",
  350. "峨嵋派-厨房": "jh fam 4 start;go west;go south;go east;go east",
  351. "峨嵋派-练功房": "jh fam 4 start;go west;go south;go west;go west",
  352. "峨嵋派-小屋": "jh fam 4 start;go west;go south;go west;go north;go north",
  353. "峨嵋派-清修洞": "jh fam 4 start;go west;go south;go west;go south;go south",
  354. "峨嵋派-大殿": "jh fam 4 start;go west;go south;go south",
  355. "峨嵋派-睹光台": "jh fam 4 start;go northup",
  356. "峨嵋派-华藏庵": "jh fam 4 start;go northup;go east",
  357. "逍遥派-青草坪": "jh fam 5 start",
  358. "逍遥派-林间小道": "jh fam 5 start;go east",
  359. "逍遥派-练功房": "jh fam 5 start;go east;go north",
  360. "逍遥派-木板路": "jh fam 5 start;go east;go south",
  361. "逍遥派-工匠屋": "jh fam 5 start;go east;go south;go south",
  362. "逍遥派-休息室": "jh fam 5 start;go west;go south",
  363. "逍遥派-木屋": "jh fam 5 start;go north;go north",
  364. "逍遥派-地下石室": "jh fam 5 start;go down;go down",
  365. "丐帮-树洞内部": "jh fam 6 start",
  366. "丐帮-树洞下": "jh fam 6 start;go down",
  367. "丐帮-暗道": "jh fam 6 start;go down;go east",
  368. "丐帮-破庙密室": "jh fam 6 start;go down;go east;go east;go east",
  369. "丐帮-土地庙": "jh fam 6 start;go down;go east;go east;go east;go up",
  370. "丐帮-林间小屋": "jh fam 6 start;go down;go east;go east;go east;go east;go east;go up",
  371. "杀手楼-大门": "jh fam 7 start",
  372. "杀手楼-大厅": "jh fam 7 start;go north",
  373. "杀手楼-暗阁": "jh fam 7 start;go north;go up",
  374. "杀手楼-铜楼": "jh fam 7 start;go north;go up;go up",
  375. "杀手楼-休息室": "jh fam 7 start;go north;go up;go up;go east",
  376. "杀手楼-银楼": "jh fam 7 start;go north;go up;go up;go up;go up",
  377. "杀手楼-练功房": "jh fam 7 start;go north;go up;go up;go up;go up;go east",
  378. "杀手楼-金楼": "jh fam 7 start;go north;go up;go up;go up;go up;go up;go up",
  379. "杀手楼-书房": "jh fam 7 start;go north;go up;go up;go up;go up;go up;go up;go west",
  380. "杀手楼-平台": "jh fam 7 start;go north;go up;go up;go up;go up;go up;go up;go up",
  381. "襄阳城-广场": "jh fam 8 start",
  382. "武道塔": "jh fam 9 start"
  383. };
  384. var drop_list = [];
  385. var fenjie_list = [];
  386.  
  387. var role;
  388. var family = null;
  389. var sm_loser = null;
  390. var wudao_pfm = "1";
  391. var ks_pfm = "2000";
  392. var automarry = null;
  393. var autoKsBoss = null;
  394. var stopauto = false;
  395. var getitemShow = null;
  396. var zmlshowsetting = 0;
  397. var auto_command = null;
  398. var eqlist = {1: [], 2: [],3: []};
  399. var unauto_pfm = '';
  400. var auto_pfmswitch = null;
  401. var autoeq = 0;
  402. //自命令数组
  403. //[{"name":"name","zmlRun":"zzzz","zmlShow":"1"}]
  404. var zml = [];
  405. //自定义存取
  406. var zdy_item_store = '';
  407. //状态监控 type 类型 0 =其他人 1= 本人 send 命令数组
  408. //[{"name":"","type":"status","action":"remove","keyword":"busy","ishave":"0","send":"","isactive":"1","maxcount":10,"pname":"宋远桥"}]
  409. var ztjk_item = [];
  410. //快捷键功能
  411. var KEY = {
  412. keys: [],
  413. roomItemSelectIndex: -1,
  414. init: function () {
  415. //添加快捷键说明
  416. $("span[command=stopstate] span:eq(0)").html("S");
  417. $("span[command=showcombat] span:eq(0)").html("A");
  418. $("span[command=showtool] span:eq(0)").html("C");
  419. $("span[command=pack] span:eq(0)").html("B");
  420. $("span[command=tasks] span:eq(0)").html("L");
  421. $("span[command=score] span:eq(0)").html("O");
  422. $("span[command=jh] span:eq(0)").html("J");
  423. $("span[command=skills] span:eq(0)").html("K");
  424. $("span[command=message] span:eq(0)").html("U");
  425. $("span[command=shop] span:eq(0)").html("P");
  426. $("span[command=stats] span:eq(0)").html("I");
  427. $("span[command=setting] span:eq(0)").html(",");
  428.  
  429. $(document).on("keydown", this.e);
  430.  
  431. this.add(27, function () {KEY.dialog_close();});
  432. this.add(192, function () {$(".map-icon").click();});
  433. this.add(32, function () {KEY.dialog_confirm();});
  434. this.add(83, function () {KEY.do_command("stopstate");});
  435. this.add(13, function () {KEY.do_command("showchat");});
  436. this.add(65, function () {KEY.do_command("showcombat");});
  437. this.add(67, function () {KEY.do_command("showtool");});
  438. this.add(66, function () {KEY.do_command("pack");});
  439. this.add(76, function () { KEY.do_command("tasks"); });
  440. this.add(79, function () {KEY.do_command("score");});
  441. this.add(74, function () {KEY.do_command("jh");});
  442. this.add(75, function () {KEY.do_command("skills");});
  443. this.add(73, function () {KEY.do_command("stats");});
  444. this.add(85, function () {KEY.do_command("message");});
  445. this.add(80, function () {KEY.do_command("shop");});
  446. this.add(188, function () {KEY.do_command("setting");});
  447.  
  448. this.add(81, function () {WG.sm_button();});
  449. this.add(87, function () {WG.go_yamen_task();});
  450. this.add(69, function () {WG.kill_all();});
  451. this.add(82, function () {WG.get_all();});
  452. this.add(84, function () {WG.sell_all();});
  453. this.add(89, function () {WG.zdwk();});
  454.  
  455. this.add(9, function () { KEY.onRoomItemSelect();return false; });
  456.  
  457. //方向
  458. this.add(102, function () {
  459. WG.Send("go east");
  460. KEY.onChangeRoom();
  461. });
  462. this.add(39, function () {
  463. WG.Send("go east");
  464. KEY.onChangeRoom();
  465. });
  466. this.add(100, function () {
  467. WG.Send("go west");
  468. KEY.onChangeRoom();
  469. });
  470. this.add(37, function () {
  471. WG.Send("go west");
  472. KEY.onChangeRoom();
  473. });
  474. this.add(98, function () {
  475. WG.Send("go south");
  476. KEY.onChangeRoom();
  477. });
  478. this.add(40, function () {
  479. WG.Send("go south");
  480. KEY.onChangeRoom();
  481. });
  482. this.add(104, function () {
  483. WG.Send("go north");
  484. KEY.onChangeRoom();
  485. });
  486. this.add(38, function () {
  487. WG.Send("go north");
  488. KEY.onChangeRoom();
  489. });
  490. this.add(99, function () {
  491. WG.Send("go southeast");
  492. KEY.onChangeRoom();
  493. });
  494. this.add(97, function () {
  495. WG.Send("go southwest");
  496. KEY.onChangeRoom();
  497. });
  498. this.add(105, function () {
  499. WG.Send("go northeast");
  500. KEY.onChangeRoom();
  501. });
  502. this.add(103, function () {
  503. WG.Send("go northwest");
  504. KEY.onChangeRoom();
  505. });
  506. //数字按键快捷出招
  507. this.add(49, function () {KEY.combat_commands(0);});
  508. this.add(50, function () {KEY.combat_commands(1);});
  509. this.add(51, function () {KEY.combat_commands(2);});
  510. this.add(52, function () {KEY.combat_commands(3);});
  511. this.add(53, function () {KEY.combat_commands(4);});
  512. this.add(54, function () {KEY.combat_commands(5);});
  513. this.add(55, function () {KEY.combat_commands(6);});
  514. this.add(56, function () {KEY.combat_commands(7);});
  515. this.add(57, function () {KEY.combat_commands(8);});
  516. this.add(48, function () {KEY.combat_commands(9);});
  517. },
  518. add: function (k, c) {
  519. var tmp = {
  520. key: k,
  521. callback: c,
  522. };
  523. this.keys.push(tmp);
  524. },
  525. e: function (event) {
  526. if ($(".channel-box").is(":visible")) {
  527. KEY.chatModeKeyEvent(event);
  528. return;
  529. }
  530. if ($(".dialog-confirm").is(":visible") &&
  531. ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105)))
  532. return;
  533. if ($('input').is(':focus') || $('textarea').is(':focus')) {
  534. return;
  535. }
  536. var kk = (event.ctrlKey || event.metaKey ? 1024 : 0) + (event.altKey ? 512 : 0) + event.keyCode;
  537. for (var k of KEY.keys) {
  538. if (k.key == kk)
  539. return k.callback();
  540. }
  541. },
  542. dialog_close: function () {
  543. $(".dialog-close").click();
  544. },
  545. dialog_confirm: function () {
  546. $(".dialog-btn.btn-ok").click();
  547. },
  548. do_command: function (name) {
  549. $("span[command=" + name + "]").click();
  550. },
  551. room_commands: function (index) {
  552. $("div.combat-panel div.room-commands span:eq(" + index + ")").click();
  553. },
  554. combat_commands: function (index) {
  555. $("div.combat-panel div.combat-commands span.pfm-item:eq(" + index + ")").click();
  556. },
  557. chatModeKeyEvent: function (event) {
  558. if (event.keyCode == 27) {
  559. KEY.dialog_close();
  560. } else if (event.keyCode == 13) {
  561. if ($(".sender-box").val().length) $(".sender-btn").click();
  562. else KEY.dialog_close();
  563. }
  564. },
  565. onChangeRoom: function () {KEY.roomItemSelectIndex = -1;},
  566. onRoomItemSelect: function () {
  567. if (KEY.roomItemSelectIndex != -1) {
  568. $(".room_items div.room-item:eq(" + KEY.roomItemSelectIndex + ")").css("background", "#000");
  569. }
  570. KEY.roomItemSelectIndex = (KEY.roomItemSelectIndex + 1) % $(".room_items div.room-item").length;
  571. var curItem = $(".room_items div.room-item:eq(" + KEY.roomItemSelectIndex + ")");
  572. curItem.css("background", "#444");
  573. curItem.click();
  574. },
  575. onRoomItemAction: function (index) {
  576. //NPC下方按键
  577. $(".room_items .item-commands span:eq(" + index + ")").click();
  578. },
  579. }
  580.  
  581. function messageClear() {
  582. $(".WG_log pre").html("");
  583. }
  584. var log_line = 0;
  585.  
  586. function messageAppend(m, t = 0) {
  587. 100 < log_line && (log_line = 0, $(".WG_log pre").empty());
  588. var ap = m + "\n";
  589. if (t == 1) {
  590. ap = "<hiy>" + ap + "</hiy>";
  591. } else if (t == 2) {
  592. ap = "<hig>" + ap + "</hig>";
  593. } else if (t == 3) {
  594. ap = "<hiw>" + ap + "</hiw>";
  595. }
  596. $(".WG_log pre").append(ap);
  597. log_line++;
  598. $(".WG_log")[0].scrollTop = 99999;
  599. }
  600. var sm_array = {
  601. '武当': {
  602. place: "武当派-三清殿",
  603. npc: "武当派第二代弟子 武当首侠 宋远桥",
  604. sxplace: "武当派-太子岩",
  605. sx: "首席弟子"
  606. },
  607. '华山': {
  608. place: "华山派-客厅",
  609. npc: "华山派掌门 君子剑 岳不群",
  610. sxplace: "华山派-练武场",
  611. sx: "首席弟子"
  612. },
  613. '少林': {
  614. place: "少林派-天王殿",
  615. npc: "少林寺第三十九代弟子 道觉禅师",
  616. sxplace: "少林派-练武场",
  617. sx: "大师兄"
  618. },
  619. '逍遥': {
  620. place: "逍遥派-青草坪",
  621. npc: "聪辩老人 苏星河",
  622. sxplace: "-jh fam 5 start;go west",
  623. sx: "首席弟子"
  624. },
  625. '丐帮': {
  626. place: "丐帮-树洞下",
  627. npc: "丐帮七袋弟子 左全",
  628. sxplace: "丐帮-破庙密室",
  629. sx: "首席弟子"
  630. },
  631. '峨嵋': {
  632. place: "峨嵋派-大殿",
  633. npc: "峨眉派第四代弟子 静心",
  634. sxplace: "峨嵋派-广场",
  635. sx: "大师姐"
  636. },
  637. '武馆': {
  638. place: "扬州城-扬州武馆",
  639. npc: "武馆教习",
  640. sxplace: "扬州城-扬州武馆"
  641. },
  642. };
  643. var WG = {
  644. sm_state: -1,
  645. sm_item: null,
  646. init: function () {
  647. $("li[command=SelectRole]").on("click", function () {
  648. WG.login();
  649. });
  650. },
  651. inArray: function (val, arr) {
  652. for (let i = 0; i < arr.length; i++) {
  653. let item = arr[i];
  654. if (item[0] == "<") {
  655. if (item == val) return true;
  656.  
  657. } else {
  658. if(item!=""){
  659. if (val.indexOf(item) >= 0) return true;
  660. }
  661. }
  662. }
  663. return false;
  664. },
  665. login: function () {
  666. role = $('.role-list .select').text().split(/[\s\n]/).pop();
  667. $(".bottom-bar").append("<span class='item-commands' style='display:none'><span WG='WG' cmd=''></span></span>"); //命令行模块
  668. var html = UI.btnui;
  669. $(".content-message").after(html);
  670. $('.content-bottom').after("<div class='zdy-commands'></div>");
  671. var css = `.zdy-item{
  672. display: inline-block;border: solid 1px gray;color: gray;background-color: black;
  673. text-align: center;cursor: pointer;border-radius: 0.25em;min-width: 2.5em;margin-right: 0em;
  674. margin-left: 0.4em;position: relative;padding-left: 0.4em;padding-right: 0.4em;line-height: 24px;}
  675. .WG_log{flex: 1;overflow-y: auto;border: 1px solid #404000;max-height: 15em;width: calc(100% - 40px);}
  676. .WG_log > pre{margin: 0px; white-space: pre-line;}
  677. .WG_button { width: calc(100% - 40px);}
  678. .item-plushp{display: inline-block;float: right;width: 100px;}
  679. .item-dps{display: inline-block;float: right;width: 100px;}
  680. .settingbox {margin-left: 0.625 em;border: 1px solid gray;background-color: transparent;color: unset;resize: none;width: 80% ;height: 3rem;}
  681. .runtest textarea {
  682. display: block;
  683. width: 300px;
  684. height: 160px;
  685. border: 10px solid #F8F8F8;
  686. border-top-width: 0;
  687. padding: 10px;
  688. line-height: 20px;
  689. overflow: auto;
  690. background-color: #3F3F3F;
  691. color: #eee;
  692. font-size: 12px;
  693. font-family: Courier New;
  694. }
  695. .runtest a {
  696. position: absolute;
  697. right: 20px;
  698. bottom: 20px;
  699. }
  700. .layui-btn, .layui-input, .layui-select, .layui-textarea, .layui-upload-button {
  701. outline: 0;
  702. -webkit-appearance: none;
  703. transition: all .3s;
  704. -webkit-transition: all .3s;
  705. box-sizing: border-box;
  706. }
  707. .layui-btn {
  708. display: inline-block;
  709. height: 38px;
  710. line-height: 38px;
  711. padding: 0 18px;
  712. background-color: #009688;
  713. color: #fff;
  714. white-space: nowrap;
  715. text-align: center;
  716. font-size: 14px;
  717. border: none;
  718. border-radius: 2px;
  719. cursor: pointer;
  720. }
  721. .layui-btn-normal {
  722. background-color: #1E9FFF;
  723. }
  724. .layui-layer-moves{
  725. background-color:transparent;
  726. }
  727. `;
  728. GM_addStyle(css);
  729. goods = GM_getValue("goods", goods);
  730. npcs = GM_getValue("npcs", npcs);
  731. equip = GM_getValue(role + "_equip", equip);
  732. family = GM_getValue(role + "_family", family);
  733. automarry = GM_getValue(role + "_automarry", automarry);
  734. autoKsBoss = GM_getValue(role + "_autoKsBoss", autoKsBoss);
  735. ks_pfm = GM_getValue(role + "_ks_pfm", ks_pfm);
  736. eqlist = GM_getValue(role + "_eqlist", eqlist);
  737. autoeq = GM_getValue(role + "_auto_eq", autoeq);
  738. if (family == null) {
  739. family = $('.role-list .select').text().substr(0, 2);
  740. }
  741. wudao_pfm = GM_getValue(role + "_wudao_pfm", wudao_pfm);
  742. sm_loser = GM_getValue(role + "_sm_loser", sm_loser);
  743. unauto_pfm = GM_getValue(role + "_unauto_pfm", unauto_pfm);
  744. auto_pfmswitch = GM_getValue(role + "_auto_pfmswitch", auto_pfmswitch);
  745. blacklist = GM_getValue(role + "_blacklist", blacklist);
  746. blacklist = blacklist.split(",");
  747. getitemShow = GM_getValue(role + "_getitemShow", getitemShow);
  748. if (getitemShow == "已开启") {
  749. G.getitemShow = true;
  750. } else {
  751. G.getitemShow = false;
  752. }
  753. //自命令
  754. zml = GM_getValue(role + "_zml", zml);
  755.  
  756. //自定义存储
  757. zdy_item_store = GM_getValue(role + "_zdy_item_store", zdy_item_store);
  758. ztjk_item = GM_getValue(role + "_ztjk", ztjk_item);
  759. if (auto_pfmswitch == '已开启') {
  760. G.auto_preform = true;
  761. }
  762. //自动后命令获取
  763. auto_command = GM_getValue(role + "_auto_command", auto_command);
  764. var unpfm = unauto_pfm.split(',');
  765. for (var pfmname of unpfm) {
  766. if (pfmname)
  767. blackpfm.push(pfmname);
  768. }
  769. if (zdy_item_store) {
  770. store_list = store_list.concat(zdy_item_store.split(","));
  771. }
  772. $(".sm_button").on("click", WG.sm_button);
  773. $(".go_yamen_task").on("click", WG.go_yamen_task);
  774. $(".kill_all").on("click", WG.kill_all);
  775. $(".get_all").on("click", WG.get_all);
  776. $(".sell_all").on("click", WG.clean_all);
  777. $(".zdwk").on("click", WG.zdwk);
  778. $(".auto_perform").on("click", WG.auto_preform_switch);
  779. $(".cmd_echo").on("click", WG.cmd_echo_button);
  780.  
  781. setTimeout(() => {
  782. role = role;
  783. var logintext = '';
  784. document.title = role + "-MUD游戏-武神传说";
  785.  
  786. L.msg(`欢迎使用 版本号${GM_info.script.version}`);
  787. KEY.do_command("showtool");
  788. KEY.do_command("pack");
  789. KEY.do_command("score");
  790. setTimeout(() => {
  791. //bind settingbox
  792. $('.WG_log').on('click', '.zdy-box', function() {
  793.  
  794. //判断
  795. if (L.isMobile()) {
  796.  
  797. var p_input = $(this);
  798. var previnfo = p_input.prev().text();
  799. var data = prompt(previnfo, $(this).val());
  800. if (data&&data!=""){
  801. p_input.val(data);
  802. p_input.change();
  803. }else{
  804. let res = confirm("确认清空?");
  805. if(res){
  806. p_input.val("");
  807. p_input.change();
  808. }
  809. }
  810.  
  811. }
  812. });
  813. KEY.do_command("score");
  814. var rolep = role;
  815. if (G.level) {
  816. rolep = G.level + role;
  817. if (G.level.indexOf('武帝') >= 0) {
  818. $('.zdy-item.zdwk').html("修炼(Y)");
  819. }
  820. }
  821.  
  822. if (WebSocket) {
  823.  
  824. if (npcs['店小二'] == 0) {
  825. logintext = `
  826. <hiy>欢迎${rolep},插件已加载!第一次使用,请在设置中,初始化ID,并且设置一下是否自动婚宴,自动传送boss
  827. 插件版本: ${GM_info.script.version}
  828. </hiy>`;
  829. } else {
  830. logintext = `
  831. <hiy>欢迎${rolep},插件已加载!
  832. 插件版本: ${GM_info.script.version}
  833. 更新日志: ${updateinfo}
  834. </hiy>`;
  835. }
  836. Helper.ztjk_func();
  837. Helper.zml_showp();
  838. } else {
  839. logintext = `
  840. <hiy>欢迎${role},插件未正常加载!
  841. 当前浏览器不支持自动喜宴自动boss,请使用火狐浏览器
  842. 谷歌系浏览器,请在network中勾选disable cache,多刷新几次,直至提示已加载!
  843. 插件版本: ${GM_info.script.version}
  844. </hiy>`;
  845. }
  846. messageAppend(logintext);
  847.  
  848. }, 500);
  849. KEY.do_command("showcombat");
  850. }, 1000);
  851. },
  852. updete_goods_id: function () {
  853. var lists = $(".dialog-list > .obj-list:first");
  854. var id;
  855. var name;
  856. if (lists.length) {
  857. messageAppend("检测到商品清单1");
  858. for (var a of lists.children()) {
  859. a = $(a);
  860. id = a.attr("obj");
  861. name = $(a.children()[0]).html();
  862. goods[name].id = id;
  863. messageAppend(name + ":" + id);
  864. }
  865. GM_setValue("goods", goods);
  866. return true;
  867. } else {
  868. messageAppend("未检测到商品清单");
  869. return false;
  870. }
  871. },
  872. updete_npc_id: function () {
  873. var lists = $(".room_items .room-item");
  874.  
  875. for (var npc of lists) {
  876. if (npc.lastElementChild.innerText.indexOf("[") >= 0) {
  877. if (npc.lastElementChild.lastElementChild.lastElementChild.lastElementChild == null) {
  878. if (npc.lastElementChild.firstChild.nodeType == 3 &&
  879. npc.lastElementChild.firstChild.nextSibling.tagName == "SPAN") {
  880. npcs[npc.lastElementChild.innerText.split('[')[0]] = $(npc).attr("itemid");
  881. messageAppend(npc.lastElementChild.innerText.split('[')[0] + " 的ID:" + $(npc).attr("itemid"));
  882. }
  883. }
  884. } else {
  885. if (npc.lastElementChild.lastElementChild == null) {
  886. npcs[npc.lastElementChild.innerText] = $(npc).attr("itemid");
  887. messageAppend(npc.lastElementChild.innerText + " 的ID:" + $(npc).attr("itemid"));
  888. }
  889. }
  890. }
  891. GM_setValue("npcs", npcs);
  892. },
  893. updete_id_all: function () {
  894. var t = [];
  895. Object.keys(goods).forEach(function (key) {
  896. if (t[goods[key].place] == undefined)
  897. t[goods[key].place] = goods[key].sales;
  898. });
  899. var keys = Object.keys(t);
  900. var i = 0;
  901. var state = 0;
  902. var place, sales;
  903. //获取
  904. var timer = setInterval(() => {
  905. switch (state) {
  906. case 0:
  907. if (i >= keys.length) {
  908. messageAppend("初始化完成");
  909. WG.go("武当派-广场");
  910. clearInterval(timer);
  911. return;
  912. }
  913. place = keys[i];
  914. sales = t[place];
  915. WG.go(place);
  916. state = 1;
  917. break;
  918. case 1:
  919. WG.updete_npc_id();
  920. var id = npcs[sales];
  921. WG.Send("list " + id);
  922. state = 2;
  923. break;
  924. case 2:
  925. if (WG.updete_goods_id()) {
  926. state = 0;
  927. i++;
  928. } else
  929. state = 1;
  930. break;
  931. }
  932. }, 1000);
  933. },
  934. Send: async function (cmd) {
  935. if (cmd) {
  936. cmd = cmd instanceof Array ? cmd : cmd.split(';');
  937. for (var c of cmd) {
  938. $("span[WG='WG']").attr("cmd", c).click();
  939. };
  940. }
  941. },
  942. SendStep: async function (cmd) {
  943. if (cmd) {
  944. cmd = cmd instanceof Array ? cmd : cmd.split(';');
  945. for (var c of cmd) {
  946. WG.Send(c);
  947. await WG.sleep(12000);
  948.  
  949. };
  950. }
  951. },
  952. SendCmd: async function (cmd) {
  953. if (cmd) {
  954. if (cmd.indexOf(",") >= 0) {
  955. if (cmd instanceof Array) {
  956. cmd = cmd;
  957. } else {
  958. if (cmd.indexOf(";") >= 0) {
  959. cmd = cmd.split(";");
  960. } else {
  961. cmd = cmd.split(",");
  962. }
  963. }
  964. } else {
  965. cmd = cmd instanceof Array ? cmd : cmd.split(';');
  966. }
  967. let idx = 0;
  968. let cmds = '';
  969. for (var c of cmd) {
  970. if (c.indexOf("$") >= 0) {
  971. if (c[0] == "$") {
  972. c = c.replace("$", "");
  973. let p0 = c.split(" ")[0];
  974. let p1 = c.split(" ")[1];
  975. cmds = cmd.join(";");
  976. eval("T." + p0 + "(" + idx + ",'" + p1 + "','" + cmds + "')");
  977. return;
  978. } else {
  979. var p_c = c.split(" ");
  980. p_c = p_c[p_c.length - 1];
  981. if (p_c) {
  982. if (p_c[0] == "$") {
  983. p_c = p_c.replace("$", "");
  984. let patt = new RegExp(/\".*?\"/);
  985. let result = patt.exec(p_c)[0];
  986. cmds = cmd.join(";");
  987. eval("T." + p_c.split('(')[0] + "(" + idx + "," + result + ",'" + cmds + "')");
  988. return;
  989. }
  990. } else {
  991. return;
  992. }
  993. }
  994. }
  995. WG.Send(c);
  996. idx = idx + 1;
  997. };
  998. }
  999. },
  1000. sleep: function (time) {
  1001. return new Promise((resolve) => setTimeout(resolve, time));
  1002. },
  1003. stopAllAuto: function () {
  1004. stopauto = true;
  1005. },
  1006. reSetAllAuto: function () {
  1007. stopauto = false;
  1008. },
  1009. go: async function (p) {
  1010. if (needfind[p] == undefined) {
  1011. if (WG.at(p)) {
  1012. return;
  1013. }
  1014. }
  1015. if (place[p] != undefined) {
  1016. WG.Send(place[p]);
  1017. }
  1018. },
  1019. at: function (p) {
  1020. var w = $(".room-name").text();
  1021. return w.indexOf(p) == -1 ? false : true;
  1022. },
  1023. smhook: undefined,
  1024. sm: function () {
  1025. if (!WG.smhook) {
  1026. WG.smhook = WG.add_hook('text', function (data) {
  1027. if (data.msg.indexOf("辛苦了, 你先去休息") >= 0 ||
  1028. data.msg.indexOf("和本门毫无瓜葛") >= 0 ||
  1029. data.msg.indexOf("你没有") >= 0
  1030. ) {
  1031. WG.Send("taskover signin");
  1032. WG.sm_state = -1;
  1033. $(".sm_button").text("师门Q");
  1034. WG.remove_hook(WG.smhook);
  1035. WG.smhook = undefined;
  1036. WG.zdwk();
  1037.  
  1038. }
  1039. });
  1040. }
  1041. switch (WG.sm_state) {
  1042. case 0:
  1043. //前往师门接收任务
  1044. WG.go(sm_array[family].place);
  1045. WG.sm_state = 1;
  1046. setTimeout(WG.sm, 700);
  1047. break;
  1048. case 1:
  1049. //接受任务
  1050. var lists = $(".room_items .room-item");
  1051. var id = null;
  1052.  
  1053. for (var npc of lists) {
  1054. if (npc.lastElementChild.innerText.indexOf("[") >= 0) {
  1055. if (npc.lastElementChild.lastElementChild.lastElementChild.lastElementChild == null) {
  1056. if (npc.lastElementChild.firstChild.nodeType == 3 &&
  1057. npc.lastElementChild.firstChild.nextSibling.tagName == "SPAN") {
  1058.  
  1059. if (npc.lastElementChild.innerText.split('[')[0] == sm_array[family].npc)
  1060. id = $(npc).attr("itemid");
  1061. }
  1062. }
  1063. } else {
  1064. if (npc.lastElementChild.lastElementChild == null) {
  1065. if (npc.lastElementChild.innerText == sm_array[family].npc) {
  1066. id = $(npc).attr("itemid");
  1067. }
  1068. }
  1069. }
  1070. }
  1071. console.log(id);
  1072. if (id != undefined) {
  1073. WG.Send("task sm " + id);
  1074. WG.Send("task sm " + id);
  1075. WG.sm_state = 2;
  1076. } else {
  1077. WG.updete_npc_id();
  1078. }
  1079. setTimeout(WG.sm, 300);
  1080. break;
  1081. case 2:
  1082. var mysm_loser = GM_getValue(role + "_sm_loser", sm_loser);
  1083. //获取师门任务物品
  1084. var item = $("span[cmd$='giveup']:last").parent().prev();
  1085. if (item.length == 0) {
  1086. WG.sm_state = 0;
  1087. setTimeout(WG.sm, 1000);
  1088. return;
  1089. };
  1090. var itemName = item.html();
  1091. item = item[0].outerHTML;
  1092. //(逗比写法)
  1093. //能上交直接上交
  1094. var tmpObj = $("span[cmd$='giveup']:last").prev();
  1095. for (let i = 0; i < 6; i++) {
  1096. if (tmpObj.children().html()) {
  1097. if (tmpObj.html().indexOf(item) >= 0) {
  1098. tmpObj.click();
  1099. messageAppend("自动上交" + item);
  1100. WG.sm_state = 0;
  1101. setTimeout(WG.sm, 100);
  1102. return;
  1103. }
  1104. tmpObj = tmpObj.prev();
  1105. }
  1106. }
  1107. //不能上交自动购买
  1108. WG.sm_item = goods[itemName];
  1109. if (WG.sm_item != undefined) {
  1110. WG.go(WG.sm_item.place);
  1111. messageAppend("自动购买" + item);
  1112. WG.sm_state = 3;
  1113. setTimeout(WG.sm, 1000);
  1114. } else {
  1115. messageAppend("无法购买" + item);
  1116. if (mysm_loser == '已停止') {
  1117. WG.sm_state = -1;
  1118. $(".sm_button").text("师门(Q)");
  1119. } else {
  1120. $("span[cmd$='giveup']:last").click();
  1121. messageAppend("放弃任务");
  1122. WG.sm_state = 0;
  1123. setTimeout(WG.sm, 100);
  1124. return;
  1125. }
  1126. }
  1127. break;
  1128. case 3:
  1129. WG.go(WG.sm_item.place);
  1130. if (WG.buy(WG.sm_item)) {
  1131. WG.sm_state = 0;
  1132. }
  1133. setTimeout(WG.sm, 1000);
  1134. break;
  1135. default:
  1136. break;
  1137. }
  1138. },
  1139. sm_button: function () {
  1140. if (WG.sm_state >= 0) {
  1141. WG.sm_state = -1;
  1142. $(".sm_button").text("师门(Q)");
  1143. } else {
  1144. WG.sm_state = 0;
  1145. $(".sm_button").text("停止(Q)");
  1146. setTimeout(WG.sm, 200);
  1147. }
  1148. },
  1149. buy: function (good) {
  1150. var tmp = npcs[good.sales];
  1151. if (tmp == undefined) {
  1152. WG.updete_npc_id();
  1153. return false;
  1154. }
  1155. WG.Send("list " + tmp);
  1156. WG.Send("buy 1 " + good.id + " from " + tmp);
  1157. return true;
  1158. },
  1159. Give: function (items) {
  1160. var tmp = npcs["店小二"];
  1161. if (tmp == undefined) {
  1162. WG.updete_npc_id();
  1163. return false;
  1164. }
  1165. WG.Send("give " + tmp + " " + items);
  1166. return true;
  1167.  
  1168. },
  1169. eq: function (e) {
  1170. WG.Send("eq " + equip[e]);
  1171. },
  1172. ask: function (npc, i) {
  1173. npc = npcs[npc];
  1174. if (npc != undefined)
  1175. WG.Send("ask" + i + " " + npc);
  1176. else
  1177. WG.updete_npc_id();
  1178. },
  1179. yamen_lister: undefined,
  1180. go_yamen_task: async function () {
  1181. if (!WG.yamen_lister) {
  1182. WG.yamen_lister = WG.add_hook('text', function (data) {
  1183. if (data.msg.indexOf("最近没有在逃的逃犯了,你先休息下吧。") >= 0) {
  1184. clearInterval(WG.check_yamen_task);
  1185. WG.check_yamen_task = 'over';
  1186. WG.remove_hook(WG.yamen_lister);
  1187. WG.yamen_lister = undefined;
  1188.  
  1189. } else if (data.msg.indexOf("没有这个人") >= 0) {
  1190. WG.updete_npc_id();
  1191. }
  1192. });
  1193. }
  1194. WG.go("扬州城-衙门正厅");
  1195. await WG.sleep(200);
  1196. WG.updete_npc_id();
  1197. WG.ask("扬州知府 程药发", 1);
  1198. if (WG.check_yamen_task == 'over') {
  1199. return;
  1200. }
  1201. window.setTimeout(WG.check_yamen_task, 1000);
  1202. },
  1203.  
  1204. check_yamen_task: function () {
  1205. if (WG.check_yamen_task == 'over') {
  1206. return;
  1207. }
  1208. messageAppend("查找任务中");
  1209. var task = $(".task-desc:eq(-3)").text();
  1210. if (task.length == 0) {
  1211. KEY.do_command("tasks");
  1212. window.setTimeout(WG.check_yamen_task, 1000);
  1213. return;
  1214. }
  1215. try {
  1216. zb_npc = task.match("犯:([^%]+),据")[1];
  1217. zb_place = task.match("在([^%]+)出")[1];
  1218. messageAppend("追捕任务:" + zb_npc + " 地点:" + zb_place);
  1219. KEY.do_command("score");
  1220. WG.go(zb_place);
  1221. window.setTimeout(WG.check_zb_npc, 1000);
  1222. } catch (error) {
  1223. messageAppend("查找衙门追捕失败");
  1224. window.setTimeout(WG.check_yamen_task, 1000);
  1225. }
  1226. },
  1227. check_zb_npc: function () {
  1228. var lists = $(".room_items .room-item");
  1229. for (var npc of lists) {
  1230. if (npc.innerText.indexOf(zb_npc) != -1) {
  1231. WG.Send("kill " + $(npc).attr("itemid"));
  1232. messageAppend("找到" + zb_npc + ",自动击杀!!!");
  1233. return;
  1234. }
  1235. }
  1236. window.setTimeout(WG.check_zb_npc, 1000);
  1237. },
  1238.  
  1239. kill_all: function () {
  1240. if(WG.at("扬州城-广场") || WG.at("武道塔-入口"))
  1241. return;//避免手滑送死
  1242. var lists = $(".room_items .room-item:gt(0)");
  1243. for (var npc of lists) {
  1244. WG.Send("kill " + $(npc).attr("itemid"));
  1245. }
  1246. },
  1247.  
  1248. get_all: function () {
  1249. var lists = $(".room_items .room-item:gt(0)");
  1250. for (var npc of lists) {
  1251. WG.Send("get all from " + $(npc).attr("itemid"));
  1252. }
  1253. },
  1254. clean_all: function () {
  1255. WG.go("扬州城-打铁铺");
  1256. WG.Send("sell all");
  1257. },
  1258. packup_listener: null,
  1259. sell_all: function () {
  1260. if(WG.at("副本"))return;//如果在副本中停止执行
  1261. if (WG.packup_listener) {
  1262. messageAppend("<hio>包裹整理</hio>运行中");
  1263. messageAppend("<hio>包裹整理</hio>手动结束");
  1264. WG.remove_hook(WG.packup_listener);
  1265. WG.packup_listener = undefined;
  1266. return;
  1267. }
  1268. let stores = [];
  1269. WG.packup_listener = WG.add_hook(["dialog", "text"], (data) => {
  1270. if (data.type == "dialog" && data.dialog == "list") {
  1271. if (data.stores == undefined) {
  1272. return;
  1273. }
  1274. stores = [];
  1275. //去重
  1276. for (let i = 0; i < data.stores.length; i++) {
  1277. let s = null;
  1278. for (let j = 0; j < stores.length; j++) {
  1279. if (stores[j].name == data.stores[i].name) {
  1280. s = stores[j];
  1281. break;
  1282. }
  1283. }
  1284. if (s != null) {
  1285. s.count += data.stores[i].count;
  1286. } else {
  1287. stores.push(data.stores[i]);
  1288. }
  1289. }
  1290. } else if (data.type == "dialog" && data.dialog == "pack") {
  1291. let cmds = [];
  1292. for (var i = 0; i < data.items.length; i++) {
  1293. //仓库
  1294. if(store_list.length!=0){
  1295. if (WG.inArray(data.items[i].name, store_list)) {
  1296. if (data.items[i].can_eq) {
  1297. //装备物品,不能叠加,计算总数
  1298. let store = null;
  1299. for (let j = 0; j < stores.length; j++) {
  1300. if (stores[j].name == data.items[i].name) {
  1301. store = stores[j];
  1302. break;
  1303. }
  1304. }
  1305. if (store != null) {
  1306. if (store.count < 4) {
  1307. store.count += data.items[i].count;
  1308. cmds.push("store " + data.items[i].count + " " + data.items[i].id);
  1309. messageAppend("<hio>包裹整理</hio>" + data.items[i].name + "储存到仓库");
  1310. } else {
  1311. messageAppend("<hio>包裹整理</hio>" + data.items[i].name + "超过设置的储存上限");
  1312. }
  1313. } else {
  1314. stores.push(data.items[i]);
  1315. cmds.push("store " + data.items[i].count + " " + data.items[i].id);
  1316. messageAppend("<hio>包裹整理</hio>" + data.items[i].name + "储存到仓库");
  1317. }
  1318. } else {
  1319. cmds.push("store " + data.items[i].count + " " + data.items[i].id);
  1320. messageAppend("<hio>包裹整理</hio>" + data.items[i].name + "储存到仓库");
  1321. }
  1322. }
  1323. }
  1324. //丢弃
  1325. if (WG.inArray(data.items[i].name, drop_list)) {
  1326. cmds.push("drop " + data.items[i].count + " " + data.items[i].id);
  1327. messageAppend("<hio>包裹整理</hio>" + data.items[i].name + "丢弃");
  1328.  
  1329. }
  1330. //分解
  1331. if (fenjie_list.length && WG.inArray(data.items[i].name, fenjie_list) && data.items[i].name.indexOf("★") == -1) {
  1332. cmds.push("fenjie " + data.items[i].id);
  1333. messageAppend("<hio>包裹整理</hio>" + data.items[i].name + "分解");
  1334.  
  1335. }
  1336. }
  1337. if (cmds.length > 0) {
  1338. WG.Send(cmds);
  1339. }
  1340. WG.go("扬州城-杂货铺");
  1341. WG.Send("sell all");
  1342. WG.Send("look3 1");
  1343. } else if (data.type == 'text' && data.msg == '没有这个玩家。') {
  1344. messageAppend("<hio>包裹整理</hio>完成");
  1345. WG.remove_hook(WG.packup_listener);
  1346. WG.packup_listener = undefined;
  1347. }
  1348. });
  1349.  
  1350. messageAppend("<hio>包裹整理</hio>开始");
  1351. WG.go("仓库");
  1352. WG.Send("store;pack");
  1353. },
  1354. cmd_echo_button: function () {
  1355. if (G.cmd_echo) {
  1356. G.cmd_echo = false;
  1357. messageAppend("<hio>命令代码关闭</hio>");
  1358. } else {
  1359. G.cmd_echo = true;
  1360. ProConsole.init();
  1361. messageAppend("<hio>命令代码显示</hio>");
  1362. }
  1363. },
  1364. zdwk: function () {
  1365. if(WG.at("副本"))return;//如果在副本中停止执行
  1366. if (G.level && G.level.indexOf('武帝') >= 0) {
  1367. WG.go("练功房");
  1368. WG.Send("xiulian");
  1369. return;
  1370. }
  1371. var t = $(".room_items .room-item:first .item-name").text();
  1372. if(t.indexOf("<挖矿")>=0){
  1373. WG.timer_close();
  1374. return;
  1375. }
  1376. WG.go("扬州城-矿山");
  1377. WG.eq("铁镐");
  1378. WG.Send("wa");
  1379.  
  1380. if (WG.at("扬州城-矿山") && t == -1) {
  1381. //不能挖矿,自动买铁镐
  1382. WG.go("扬州城-打铁铺");
  1383. WG.buy(goods["铁镐"]);
  1384. //买完等待下一次检查
  1385. messageAppend("自动买铁镐");
  1386. return;
  1387. }
  1388. timer=setTimeout(WG.zdwk, 5000);
  1389. },
  1390. timer_close: function () {
  1391. if (timer) {
  1392. clearInterval(timer);
  1393. timer = 0;
  1394. }
  1395. },
  1396. wudao_auto: function () {
  1397. //创建定时器
  1398. if (timer == 0) {
  1399. timer = setInterval(WG.wudao_auto, 2000);
  1400. }
  1401. if (!WG.at("武道塔")) {
  1402. //进入武道塔
  1403. WG.go("武道塔");
  1404. WG.ask("守门人", 1);
  1405. WG.Send("go enter");
  1406. } else {
  1407. //武道塔内处理
  1408. messageAppend("武道塔");
  1409. var w = $(".room_items .room-item:last");
  1410. var t = w.text();
  1411. if (t.indexOf("守护者") != -1){
  1412. if($(".eq-name:first").text()==""){//检查是否装备武器
  1413. $(".act-item").each(function(){//没有装备武器就在快捷栏触发装备
  1414. if($(this).text().indexOf("刀")>=0||$(this).text().indexOf("剑")>=0)$(this).click();
  1415. });
  1416. }
  1417. WG.Send("liaoshang");//疗伤
  1418. WG.Send("kill " + w.attr("itemid"));
  1419. } else {
  1420. WG.Send("go up");
  1421. }
  1422. }
  1423. },
  1424. xue_auto: function () {
  1425. var t = $(".room_items .room-item:first .item-name").text();
  1426. t = t.indexOf("<打坐") >0 || t.indexOf("<学习") >0 || t.indexOf("<练习") >0 || t.indexOf("<读书") >0;
  1427. //创建定时器
  1428. if (timer == 0) {
  1429. if (t == false) {
  1430. messageAppend("当前不在打坐或学技能");
  1431. return;
  1432. }
  1433. timer = setInterval(WG.xue_auto, 1000);
  1434. }
  1435. if (t == false) {
  1436. //学习状态中止,自动去挖矿
  1437. WG.timer_close();
  1438. WG.zdwk();
  1439. } else {
  1440. messageAppend("自动打坐学技能");
  1441. }
  1442. },
  1443. fbnum: 0,
  1444. needGrove: 0,
  1445. oncegrove: function () {
  1446. this.fbnum += 1;
  1447. messageAppend("第" + this.fbnum + "次");
  1448. WG.Send("cr yz/lw/shangu;cr over");
  1449. if (this.needGrove == this.fbnum) {
  1450. WG.Send("taskover signin");
  1451. messageAppend("<hiy>" + this.fbnum + "次副本小树林秒进秒退已完成</hiy>");
  1452. WG.remove_hook(Helper.daily_hook);
  1453. Helper.daily_hook = undefined;
  1454. this.timer_close();
  1455. WG.zdwk();
  1456. this.needGrove = 0;
  1457. this.fbnum = 0;
  1458. }
  1459. },
  1460. grove_ask_info: function () {
  1461. return prompt("请输入需要秒进秒退的副本次数", "");
  1462. },
  1463. grove_auto: function (needG = null) {
  1464. if (timer == 0) {
  1465. if (needG == null) {
  1466. this.needGrove = this.grove_ask_info();
  1467. } else {
  1468. this.needGrove = needG;
  1469. }
  1470. if (this.needGrove) //如果返回的有内容
  1471. {
  1472. if (parseFloat(this.needGrove).toString() == "NaN") {
  1473. messageAppend("请输入数字");
  1474. return;
  1475. }
  1476. messageAppend("开始秒进秒退小树林" + this.needGrove + "次");
  1477.  
  1478. timer = setInterval(() => {
  1479. this.oncegrove()
  1480. }, 1000);
  1481. }
  1482. }
  1483. },
  1484. showhideborad: function () {
  1485. if ($('.WG_log').css('display') == 'none') {
  1486. $('.WG_log').show();
  1487. } else {
  1488. $('.WG_log').hide();
  1489. }
  1490. },
  1491. calc: function () {
  1492. messageClear();
  1493. var html = UI.jsqui;
  1494. messageAppend(html);
  1495. $("#qnjs").on('click', function () {
  1496. messageAppend("需要潜能:" + Helper.dian(Number($("#c").val()), Number($("#m").val()), Number($("#se").val())));
  1497. });
  1498. $("#kaihua").on('click', function () {
  1499. messageAppend("你的分值:" + Helper.gen(Number($("#nl").val()), Number($("#xg").val()), Number($("#hg").val())));
  1500. });
  1501. },
  1502. //设置
  1503. setting: function () {
  1504. messageClear();
  1505. var a = UI.syssetting;
  1506. messageAppend(a);
  1507. $('#family').val(family);
  1508. $("#family").change(function () {
  1509. family = $("#family").val();
  1510. GM_setValue(role + "_family", family);
  1511. });
  1512. $('#wudao_pfm').val(wudao_pfm);
  1513. $('#wudao_pfm').focusout(function () {
  1514. wudao_pfm = $('#wudao_pfm').val();
  1515. GM_setValue(role + "_wudao_pfm", wudao_pfm);
  1516. });
  1517. $('#sm_loser').val(sm_loser);
  1518. $('#sm_loser').focusout(function () {
  1519. sm_loser = $('#sm_loser').val();
  1520. GM_setValue(role + "_sm_loser", sm_loser);
  1521. });
  1522. $('#ks_pfm').val(ks_pfm);
  1523. $('#ks_pfm').focusout(function () {
  1524. ks_pfm = $('#ks_pfm').val();
  1525. GM_setValue(role + "_ks_pfm", ks_pfm);
  1526. });
  1527. $('#marry_kiss').val(automarry);
  1528. $('#marry_kiss').change(function () {
  1529. automarry = $('#marry_kiss').val();
  1530. GM_setValue(role + "_automarry", automarry);
  1531. });
  1532. $('#ks_Boss').val(autoKsBoss);
  1533. $('#ks_Boss').change(function () {
  1534. autoKsBoss = $('#ks_Boss').val();
  1535. GM_setValue(role + "_autoKsBoss", autoKsBoss);
  1536. });
  1537. $('#auto_eq').val(autoeq);
  1538. $('#auto_eq').change(function () {
  1539. autoeq = $('#auto_eq').val();
  1540. GM_setValue(role + "_auto_eq", autoeq);
  1541.  
  1542. });
  1543. $('#autopfmswitch').val(auto_pfmswitch);
  1544. $('#autopfmswitch').change(function () {
  1545. auto_pfmswitch = $('#autopfmswitch').val();
  1546. GM_setValue(role + "_auto_pfmswitch", auto_pfmswitch);
  1547. if (auto_pfmswitch == '已开启') {
  1548. G.auto_preform = true;
  1549. } else {
  1550. G.auto_preform = false;
  1551. }
  1552. });
  1553. //自命令显示设置
  1554. $("#zmlshowsetting").val(zmlshowsetting);
  1555. $("#zmlshowsetting").change(function () {
  1556. zmlshowsetting = $('#zmlshowsetting').val();
  1557. GM_setValue(role + "_zmlshowsetting", zmlshowsetting);
  1558. Helper.zml_showp();
  1559. });
  1560. $('#getitemShow').val(getitemShow);
  1561. $('#getitemShow').change(function () {
  1562. getitemShow = $('#getitemShow').val();
  1563. GM_setValue(role + "_getitemShow", getitemShow);
  1564. if (getitemShow == '已开启') {
  1565. G.getitemShow = true;
  1566. } else {
  1567. G.getitemShow = false;
  1568. }
  1569. });
  1570. $('#unauto_pfm').val(unauto_pfm);
  1571. $('#unauto_pfm').change(function () {
  1572. unauto_pfm = $('#unauto_pfm').val();
  1573. GM_setValue(role + "_unauto_pfm", unauto_pfm);
  1574. var unpfm = unauto_pfm.split(',');
  1575. blackpfm.length=0;
  1576. for (var pfmname of unpfm) {
  1577. if (pfmname)
  1578. blackpfm.push(pfmname);
  1579. }
  1580. });
  1581. $('#store_info').val(zdy_item_store);
  1582. $('#store_info').change(function () {
  1583. zdy_item_store = $('#store_info').val();
  1584. GM_setValue(role + "_zdy_item_store", zdy_item_store);
  1585. store_list = zdy_item_store.split(",");
  1586. });
  1587. $('#auto_command').val(auto_command);
  1588. $('#auto_command').change(function () {
  1589. auto_command = $('#auto_command').val();
  1590. GM_setValue(role + "_auto_command", auto_command);
  1591. });
  1592. $("#blacklist").val(blacklist);
  1593. $('#blacklist').change(function () {
  1594. blacklist = $('#blacklist').val();
  1595. GM_setValue(role + "_blacklist", blacklist);
  1596. });
  1597. $(".updete_id_all").on("click", WG.updete_id_all);
  1598. },
  1599. hooks: [],
  1600. hook_index: 0,
  1601. add_hook: function (types, fn) {
  1602. var hook = {
  1603. 'index': WG.hook_index++,
  1604. 'types': types,
  1605. 'fn': fn
  1606. };
  1607. WG.hooks.push(hook);
  1608. return hook.index;
  1609. },
  1610. remove_hook: function (hookindex) {
  1611. var that = this;
  1612. console.log("remove_hook");
  1613. for (var i = 0; i < that.hooks.length; i++) {
  1614. if (that.hooks[i].index == hookindex) {
  1615. that.hooks.baoremove(i);
  1616. }
  1617. }
  1618. },
  1619. run_hook: function (type, data) {
  1620. //console.log(data);
  1621. for (var i = 0; i < this.hooks.length; i++) {
  1622. // if (this.hooks[i] !== undefined && this.hooks[i].type == type) {
  1623. // this.hooks[i].fn(data);
  1624. // }
  1625. var listener = this.hooks[i];
  1626. if (listener.types == data.type || (listener.types instanceof Array && $
  1627. .inArray(data.type, listener.types) >= 0)) {
  1628. listener.fn(data);
  1629. }
  1630. }
  1631. },
  1632. receive_message: function (msg) {
  1633. ws_on_message.apply(this, arguments);
  1634. if (!msg || !msg.data) return;
  1635. var data;
  1636. if (msg.data[0] == '{' || msg.data[0] == '[') {
  1637. var func = new Function("return " + msg.data + ";");
  1638. data = func();
  1639. } else {
  1640. data = {
  1641. type: 'text',
  1642. msg: msg.data
  1643. };
  1644. }
  1645. if (G.cmd_echo) {
  1646. console.log(data);
  1647. }
  1648. WG.run_hook(data.type, data);
  1649. },
  1650. auto_preform_switch: function () {
  1651.  
  1652. if (G.auto_preform) {
  1653. G.auto_preform = false;
  1654. messageAppend("<hio>自动施法</hio>关闭");
  1655. WG.auto_preform("stop");
  1656. } else {
  1657. G.auto_preform = true;
  1658. messageAppend("<hio>自动施法</hio>开启");
  1659. WG.auto_preform();
  1660. }
  1661. },
  1662. auto_preform: function (v) {
  1663. if (v == "stop") {
  1664. if (G.preform_timer) {
  1665. clearInterval(G.preform_timer);
  1666. G.preform_timer = undefined;
  1667. $(".auto_perform").css("background", "");
  1668. }
  1669. return;
  1670. }
  1671. if (G.preform_timer || G.auto_preform == false) return;
  1672. $(".auto_perform").css("background", "#3E0000");
  1673. G.preform_timer = setInterval(() => {
  1674. //出招时重新获取黑名单
  1675. unauto_pfm = GM_getValue(role + "_unauto_pfm", unauto_pfm);
  1676. var unpfm = unauto_pfm.split(',');
  1677. for (var pfmname of unpfm) {
  1678. if (pfmname)
  1679. blackpfm.push(pfmname);
  1680. }
  1681. if (G.in_fight == false) WG.auto_preform("stop");
  1682. for (var skill of G.skills) {
  1683. if (family.indexOf("逍遥") >= 0) {
  1684. if (skill.id == "unarmed.duo") {
  1685. continue;
  1686. }
  1687. }
  1688. if (WG.inArray(skill.id, blackpfm)) {
  1689. continue;
  1690. }
  1691. if (!G.gcd && !G.cds.get(skill.id)) {
  1692. WG.Send("perform " + skill.id);
  1693. break;
  1694. }
  1695. }
  1696. }, 350);
  1697. },
  1698. };
  1699. var Helper = {
  1700. formatCurrencyTenThou: function (num) {
  1701. num = num.toString().replace(/\$|\,/g, '');
  1702. if (isNaN(num)) num = "0";
  1703. var sign = (num == (num = Math.abs(num)));
  1704. num = Math.floor(num * 10 + 0.50000000001); //cents = num%10;
  1705. num = Math.floor(num / 10).toString();
  1706. for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) {
  1707. num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3));
  1708. }
  1709. return (((sign) ? '' : '-') + num);
  1710. },
  1711. gen: function (nl, xg, hg) {
  1712. var jg = nl / 100 + xg * hg / 10;
  1713. var sd = this.formatCurrencyTenThou(jg);
  1714. return sd;
  1715. },
  1716. dian: function (c, m, se) {
  1717. var j = c + m;
  1718. var jj = m - c;
  1719. var jjc = jj / 2;
  1720. var z = j * jjc * se * 5;
  1721. var sd = this.formatCurrencyTenThou(z);
  1722. return sd;
  1723. },
  1724. //找boss,boss不在,-1,
  1725. findboss: function (data, bossname, callback) {
  1726. for (let i = 0; i < data.items.length; i++) {
  1727. if (data.items[i] != 0) {
  1728. if (data.items[i].name.indexOf(bossname) >= 0) {
  1729. callback(data.items[i].id);
  1730. }
  1731. }
  1732. }
  1733. callback(-1);
  1734. },
  1735. ksboss: '',
  1736. marryhy: '',
  1737. kksBoss: function (data) {
  1738. var boss_place = data.content.match("出现在([^%]+)一带。");
  1739. var boss_name = data.content.match("听说([^%]+)出现在");
  1740. if (boss_name == null || boss_place == null) {
  1741. return;
  1742. }
  1743. blacklist = GM_getValue(role + "_blacklist", blacklist);
  1744. blacklist = blacklist instanceof Array ? blacklist : blacklist.split(",");
  1745. if (WG.inArray(boss_name, blacklist)) {
  1746. messageAppend("黑名单boss,忽略!");
  1747. return;
  1748. }
  1749. boss_name = data.content.match("听说([^%]+)出现在")[1];
  1750. boss_place = data.content.match("出现在([^%]+)一带。")[1];
  1751. var autoKsBoss = GM_getValue(role + "_autoKsBoss", autoKsBoss);
  1752. var ks_pfm_p = GM_getValue(role + "_ks_pfm", ks_pfm);
  1753. var autoeq = GM_getValue(role + "_auto_eq", autoeq);
  1754. console.log("boss");
  1755. console.log(boss_place);
  1756. messageAppend("自动前往BOSS地点");
  1757. WG.Send("stopstate");
  1758. WG.go(boss_place);
  1759. this.ksboss = WG.add_hook(["items", "itemadd", "die"], function (data) {
  1760. if (data.type == "items") {
  1761. if (!WG.at(boss_place)) {
  1762. return;
  1763. }
  1764. Helper.findboss(data, boss_name, function (bid) {
  1765. if (bid != -1) {
  1766. next = 999;
  1767. Helper.eqhelper(autoeq);
  1768. setTimeout(() => {
  1769. WG.Send("kill " + bid);
  1770. //WG.Send("select " + bid);
  1771. next = 0;
  1772. }, Number(ks_pfm_p));
  1773. } else {
  1774. if (next == 999) {
  1775. console.log('found');
  1776. return;
  1777. }
  1778. let lj = needfind[boss_place];
  1779. if (needfind[boss_place] != undefined && next < lj.length) {
  1780. setTimeout(() => {
  1781. console.log(lj[next]);
  1782. WG.Send(lj[next]);
  1783. next++;
  1784. }, 1000);
  1785. } else {
  1786. console.log("not found");
  1787. }
  1788. }
  1789. });
  1790. }
  1791. if (data.type == "itemadd") {
  1792. if (data.name.indexOf(boss_name) >= 0) {
  1793. next = 0;
  1794. WG.get_all();
  1795. WG.remove_hook(this.index);
  1796. }
  1797. }
  1798. if (data.type == "die") {
  1799. next = 0;
  1800. WG.Send('relive');
  1801. WG.remove_hook(this.index);
  1802. }
  1803. });
  1804. setTimeout(() => {
  1805. console.log("复活挖矿");
  1806. WG.Send('relive');
  1807. WG.remove_hook(this.ksboss);
  1808. auto_command = GM_getValue(role + "_auto_command", auto_command);
  1809. if (auto_command && auto_command != null && auto_command != "" && auto_command != "null") {
  1810. WG.SendCmd(auto_command);
  1811. } else {
  1812. WG.zdwk();
  1813. }
  1814. next = 0;
  1815. }, 120000);
  1816. },
  1817. xiyan: function () {
  1818. WG.Send("stopstate");
  1819. WG.go("扬州城-喜宴");
  1820. this.marryhy = WG.add_hook(['items', 'cmds', 'text', 'msg'], function (data) {
  1821.  
  1822. if (data.type == 'items') {
  1823.  
  1824. for (let idx = 0; idx < data.items.length; idx++) {
  1825. if (data.items[idx] != 0) {
  1826. if (data.items[idx].name.indexOf(">婚宴礼桌<") >= 0) {
  1827. console.log("拾取");
  1828. WG.Send('get all from ' + data.items[idx].id);
  1829. console.log("xy" + this.index);
  1830. WG.remove_hook(this.index);
  1831.  
  1832. break;
  1833. }
  1834. }
  1835. }
  1836. } else if (data.type == 'text') {
  1837. if (data.msg == "你要给谁东西?") {
  1838. console.log("没人");
  1839. }
  1840. if (/^店小二拦住你说道:怎么又是你,每次都跑这么快,等下再进去。$/.test(data.msg)) {
  1841. console.log("cd");
  1842. messageAppend("<hiy>你太勤快了, 1秒后回去挖矿</hiy>")
  1843. }
  1844. if (/^店小二拦住你说道:这位(.+),不好意思,婚宴宾客已经太多了。$/.test(data.msg)) {
  1845. console.log("客满");
  1846. messageAppend("<hiy>你来太晚了, 1秒后回去挖矿</hiy>")
  1847.  
  1848. }
  1849. } else if (data.type == 'cmds') {
  1850.  
  1851. for (let idx = 0; idx < data.items.length; idx++) {
  1852. if (data.items[idx].name == '1金贺礼') {
  1853. WG.Send(data.items[idx].cmd + ';go up');
  1854. console.log("交钱");
  1855. break;
  1856. }
  1857. }
  1858. }
  1859. });
  1860. setTimeout(() => {
  1861. console.log("挖矿");
  1862. WG.remove_hook(this.marryhy);
  1863. if (auto_command && auto_command != null && auto_command != "" && auto_command != "null") {
  1864. WG.SendCmd(auto_command);
  1865. } else {
  1866. WG.zdwk();
  1867. }
  1868. next = 0;
  1869. }, 12000);
  1870. },
  1871.  
  1872. saveRoomstate(data) {
  1873. roomData = data.items;
  1874. },
  1875.  
  1876. eqx: null,
  1877. eqhelper(type) {
  1878. if (type == undefined || type == 0 || type > eqlist.length) {
  1879. return;
  1880. }
  1881. if (eqlist == null || eqlist[type] == "") {
  1882. messageAppend("套装未保存,保存当前装备作为套装" + type + "!", 1);
  1883. this.eqx = WG.add_hook("dialog", (data) => {
  1884. if (data.dialog == "pack" && data.eqs != undefined) {
  1885. eqlist[type] = data.eqs;
  1886. GM_setValue(role + "_eqlist", eqlist);
  1887. messageAppend("套装" + type + "保存成功!", 1);
  1888. WG.remove_hook(this.eqx);
  1889. }
  1890. });
  1891. WG.Send("pack");
  1892. } else {
  1893. eqlist = GM_getValue(role + "_eqlist", eqlist);
  1894. let p_cmds = "";
  1895. for (let i = 1; i < eqlist[type].length; i++) {
  1896. if (eqlist[type][i] != null) {
  1897.  
  1898. p_cmds += ("$wait 20;eq " + eqlist[type][i].id + ";");
  1899. }
  1900. }
  1901.  
  1902. if (eqlist[type][0] != null) {
  1903. p_cmds += ("$wait 40;eq " + eqlist[type][0].id + ";");
  1904. }
  1905. WG.SendCmd(p_cmds);
  1906. messageAppend("套装装备成功" + type + "!", 1);
  1907. }
  1908. },
  1909. eqhelperdel: function (type) {
  1910. eqlist = GM_getValue(role + "_eqlist", eqlist);
  1911. eqlist[type] = [];
  1912. GM_setValue(role + "_eqlist", eqlist);
  1913. messageAppend("清除套装" + type + "设置成功!", 1);
  1914. },
  1915. uneqall: function () {
  1916. this.eqx = WG.add_hook("dialog", (data) => {
  1917. if (data.dialog == "pack" && data.eqs != undefined) {
  1918. for (let i = 0; i < data.eqs.length; i++) {
  1919. if (data.eqs[i] != null) {
  1920. WG.Send("uneq " + data.eqs[i].id);
  1921. }
  1922. }
  1923. WG.remove_hook(this.eqx);
  1924. }
  1925. });
  1926. WG.Send("pack");
  1927. messageAppend("取消所有装备成功!", 1);
  1928. },
  1929.  
  1930. fight_listener: undefined,
  1931. auto_fight: function () {
  1932.  
  1933. if (Helper.fight_listener) {
  1934. messageAppend("<hio>自动比试</hio>结束");
  1935. WG.remove_hook(Helper.fight_listener);
  1936. Helper.fight_listener = undefined;
  1937. return;
  1938. }
  1939. let name = prompt("请输入NPC名称,例如:\"高根明\"");
  1940. let id = Helper.find_item(name);
  1941. if (id == null) return;
  1942. Helper.fight_listener = WG.add_hook(["text", "sc", "combat"], async function (data) {
  1943. if (data.type == "combat" && data.end) {
  1944. let item = G.items.get(G.id);
  1945. if (item.mp / item.max_mp < 0.8) {
  1946. WG.SendCmd("dazuo");
  1947. }
  1948. WG.SendCmd("liaoshang");
  1949. } else if (data.type == "sc" && data.id == id) {
  1950. let item = G.items.get(id);
  1951. if (item.hp >= item.max_hp) {
  1952. WG.Send("stopstate;fight " + id);
  1953. }
  1954. } else if (data.type == 'sc' && data.id == G.id) {
  1955. if (data.hp >= data.max_hp) {
  1956. WG.Send("stopstate;fight " + id);
  1957. }
  1958. } else if (data.type == 'text') {
  1959. if (data.msg.indexOf("你先调整好自己的状态再来找别人比试吧") >= 0) {
  1960. WG.SendCmd("liaoshang");
  1961. }
  1962. if (data.msg.indexOf("你想趁人之危吗") >= 0) {
  1963. WG.SendCmd("dazuo");
  1964. }
  1965. if (data.msg.indexOf(">你疗伤完毕,深深吸了口气") >= 0) {
  1966. WG.Send("stopstate;fight " + id);
  1967. }
  1968. }
  1969.  
  1970. });
  1971. WG.Send("stopstate;fight " + id);
  1972. messageAppend("<hio>自动比试</hio>开始");
  1973. },
  1974. find_item: function (name) {
  1975. for (let [k, v] of G.items) {
  1976. if (v.name == name) {
  1977. return k;
  1978. }
  1979. }
  1980. return null;
  1981. },
  1982. recover: function (hp, mp, cd, callback) {
  1983. //返回定时器
  1984. if (hp == 0) {
  1985. if (WG.recover_timer) {
  1986. clearTimeout(WG.recover_timer);
  1987. WG.recover_timer = undefined;
  1988. }
  1989. return;
  1990. }
  1991. WG.Send("dazuo");
  1992. WG.recover_timer = setInterval(function () {
  1993. //检查状态
  1994. let item = G.items.get(G.id);
  1995. if (item.mp / item.max_mp < mp) { //内力控制
  1996. if (item.state != "打坐") {
  1997. WG.Send("stopstate;dazuo");
  1998. }
  1999. return;
  2000. }
  2001. if (item.hp / item.max_hp < hp) {
  2002. //血满
  2003. if (item.state != "疗伤") {
  2004. WG.Send("stopstate;liaoshang");
  2005. }
  2006. return;
  2007. }
  2008. if (item.state) WG.Send("stopstate");
  2009. if (cd) {
  2010. for (let [k, v] of G.cds) {
  2011. if (k == "force.tu") continue;
  2012. if (v) return;
  2013. }
  2014. }
  2015. clearInterval(WG.recover_timer);
  2016. callback();
  2017. }, 1000);
  2018. },
  2019. useitem_hook: undefined,
  2020. auto_useitem: async function () {
  2021. var useflag = true;
  2022. if (!Helper.useitem_hook) {
  2023. Helper.useitem_hook = WG.add_hook("text", function (data) {
  2024. if (data.msg.indexOf("你身上没有这个东西") >= 0 || data.msg.indexOf("太多") >= 0 || data.msg.indexOf("不能使用") >= 0) {
  2025. useflag = false;
  2026. WG.remove_hook(Helper.useitem_hook);
  2027. Helper.useitem_hook = undefined;
  2028. }
  2029. })
  2030. }
  2031. let name = prompt("请输入物品id,在背包中点击查看物品,即可在提示窗口看到物品id输出");
  2032. if (!name) {
  2033. WG.remove_hook(Helper.useitem_hook);
  2034. Helper.useitem_hook = undefined;
  2035. return;
  2036. }
  2037. let num = prompt("请输入物品使用次数,例如:\"10\"", '10');
  2038. if (name) {
  2039. if (name.length != 11) {
  2040. L.msg('id不合法');
  2041. WG.remove_hook(Helper.useitem_hook);
  2042. Helper.useitem_hook = undefined;
  2043. return;
  2044. }
  2045. for (var i = 0; i < num; i++) {
  2046. if (useflag) {
  2047. WG.Send('use ' + name);
  2048. await WG.sleep(1000);
  2049. } else {
  2050. WG.remove_hook(Helper.useitem_hook);
  2051. Helper.useitem_hook = undefined;
  2052. return;
  2053. }
  2054. }
  2055. }
  2056. WG.remove_hook(Helper.useitem_hook);
  2057. Helper.useitem_hook = undefined;
  2058. },
  2059.  
  2060. auto_Development_medicine: function () {
  2061. messageClear();
  2062. var a = UI.lyui;
  2063. messageAppend(a);
  2064.  
  2065. $('.startDev').on('click', function () {
  2066. if (WG.at('住房-炼药房')) {
  2067. Helper.auto_start_dev_med($('#medicint_info').val().replace(" ", ""), $('#medicine_level').val());
  2068. } else {
  2069. L.msg("请先前往炼药房");
  2070. }
  2071. });
  2072. $('.stopDev').on('click', function () {
  2073. WG.Send("stopstate");
  2074. });
  2075. },
  2076. findMedItems_hook: undefined,
  2077. auto_start_dev_med: function (med_item, level) {
  2078. if (med_item) {
  2079. if (med_item.split(",").length < 2) {
  2080. L.msg("素材不足");
  2081. return;
  2082. }
  2083. } else {
  2084. L.msg("素材不足");
  2085. return;
  2086. }
  2087. var med_items = med_item.split(',');
  2088.  
  2089. Helper.findMedItems_hook = WG.add_hook("dialog", function (data) {
  2090. if (data.dialog == "pack" && data.items != undefined && data.items.length >= 0) {
  2091. let med_items_id = [];
  2092. for (var med_item of med_items) {
  2093. if (JSON.stringify(data.items).indexOf(med_item) >= 0) {
  2094. for (var item of data.items) {
  2095. if (item.name.indexOf(med_item) >= 0) {
  2096. med_items_id.push(item.id);
  2097. }
  2098. }
  2099. }
  2100.  
  2101. }
  2102. if (med_items_id.length != med_items.length) {
  2103. L.msg("素材不足,请检查背包是否存在相应素材");
  2104. return;
  2105. }
  2106. var p_Cmd = Helper.make_med_cmd(med_items_id, level);
  2107. console.log(p_Cmd);
  2108. WG.SendStep(p_Cmd);
  2109. WG.remove_hook(Helper.findMedItems_hook);
  2110. }
  2111. });
  2112. WG.Send('pack');
  2113.  
  2114. },
  2115. make_med_cmd: function (medItem_id, level) {
  2116. var startCmd = "lianyao2 start " + level;
  2117. var endCmd = "lianyao2 stop";
  2118. var midCmd = "lianyao2 add ";
  2119. var result = startCmd + ";";
  2120. for (var medid of medItem_id) {
  2121. result += midCmd + medid + ";"
  2122. }
  2123. result += endCmd;
  2124. return result;
  2125. },
  2126. zml: function () {
  2127. zml = GM_getValue(role + "_zml", zml);
  2128. messageClear();
  2129. var a = UI.zmlandztjkui;
  2130. messageAppend(a);
  2131. zml.forEach(function (v, k) {
  2132. var btn = "<span class='addrun" + k + "'>" + v.name + "</span>";
  2133. $('#zml_show').append(btn);
  2134.  
  2135. })
  2136. zml.forEach(function (v, k) {
  2137. $(".addrun" + k).on("click", function () {
  2138. WG.SendCmd(v.zmlRun);
  2139. messageAppend("运行" + v.name, 2);
  2140. });
  2141. });
  2142.  
  2143. $(".editzml").on("click", function () {
  2144. Helper.zml_edit();
  2145. });
  2146. $(".editztjk").on("click", function () {
  2147. Helper.ztjk_edit();
  2148. });
  2149. $(".startzdjk").on("click", function () {
  2150. Helper.ztjk_func();
  2151. });
  2152. $(".stopzdjk").on("click", function () {
  2153. if (Helper.ztjk_hook) {
  2154. WG.remove_hook(Helper.ztjk_hook);
  2155. Helper.ztjk_hook = undefined;
  2156. messageAppend("已取消注入", 2);
  2157. return;
  2158. }
  2159. messageAppend("未注入", 2);
  2160. });
  2161.  
  2162. },
  2163. zml_edit: function (info = "") {
  2164. zml = GM_getValue(role + "_zml", zml);
  2165. messageClear();
  2166. L.msg(info);
  2167. var edithtml = UI.zmlsetting;
  2168. messageAppend(edithtml);
  2169. $(".editadd").on('click', function () {
  2170. let zmltext = $("#zml_info").val();
  2171. let zmlname = $("#zml_name").val().replace(" ", "");
  2172. let zmljson = {
  2173. "name": zmlname,
  2174. "zmlRun": zmltext,
  2175. "zmlShow": 0
  2176. };
  2177. let _flag = true;
  2178. zml.forEach(function (v, k) {
  2179. if (v.name == zmlname) {
  2180. zmljson.zmlShow = v.zmlShow;
  2181. zml[k] = zmljson;
  2182. _flag = false;
  2183. }
  2184. });
  2185. if (_flag) {
  2186. zml.push(zmljson);
  2187. }
  2188. GM_setValue(role + "_zml", zml);
  2189. Helper.zml_edit("保存成功");
  2190. });
  2191. $(".editdel").on('click', function () {
  2192. let zmlname = $("#zml_name").val();
  2193. zml.forEach(function (v, k) {
  2194. if (v.name == zmlname) {
  2195. zml.baoremove(k);
  2196. GM_setValue(role + "_zml", zml);
  2197.  
  2198. Helper.zml_edit("删除成功");
  2199. }
  2200. });
  2201.  
  2202. });
  2203.  
  2204. zml.forEach(function (v, k) {
  2205. var btn = "<span class='addrun" + k + "'>编辑" + v.name + "</span>";
  2206. var btn2 = "<span class='shortcut" + k + "'>设置快速使用" + v.name + "</span>";
  2207. $('#zml_show').append(btn);
  2208. $('#zml_show').append(btn2);
  2209. $('#zml_show').append("<br/>");
  2210.  
  2211. });
  2212.  
  2213. zml.forEach(function (v, k) {
  2214. $(".addrun" + k).on("click", function () {
  2215.  
  2216. $("#zml_name").val(v.name);
  2217. $("#zml_info").val(v.zmlRun);
  2218. });
  2219. $(".shortcut" + k).on("click", function () {
  2220. zmlshowsetting = GM_getValue(role + "_zmlshowsetting", zmlshowsetting);
  2221. //<span class="zdy-item act-item-zdy" zml="use j8ea35f34ce">大还丹</span>
  2222. let a = $(".room-commands");
  2223.  
  2224. if (zmlshowsetting == 1) {
  2225. a = $(".zdy-commands");
  2226. }
  2227.  
  2228. for (let item of a.children()) {
  2229. if (item.textContent == v.name) {
  2230. item.remove();
  2231. v.zmlShow = 0;
  2232. GM_setValue(role + "_zml", zml);
  2233. messageAppend("删除快速使用" + v.name, 1);
  2234. return;
  2235. }
  2236. }
  2237. a.append("<span class=\"zdy-item act-item-zdy\" zml=\"" + v.zmlRun + "\">" + v.name + "</span>")
  2238. v.zmlShow = 1;
  2239. GM_setValue(role + "_zml", zml);
  2240. messageAppend("设置快速使用" + v.name, 1);
  2241. //绑定事件
  2242. $('.act-item-zdy').off('click');
  2243. $(".act-item-zdy").on('click', function () {
  2244. T.usezml(0, this.textContent, "");
  2245. });
  2246. });
  2247. });
  2248. },
  2249. isseted: false,
  2250. zml_showp: function () {
  2251. zmlshowsetting = GM_getValue(role + "_zmlshowsetting", zmlshowsetting);
  2252.  
  2253. for (let zmlitem of zml) {
  2254. let a = $(".room-commands");
  2255. if (zmlshowsetting == 1) {
  2256. for (let item of a.children()) {
  2257. if (item.textContent == zmlitem.name) {
  2258. item.remove();
  2259. }
  2260. }
  2261. a = $(".zdy-commands");
  2262. if (!Helper.isseted) {
  2263. let px = $('.tool-bar.right-bar').css("bottom");
  2264. px.replace("px", "");
  2265. px = parseInt(px);
  2266. px = px + 24;
  2267. $('.tool-bar.right-bar').css("bottom", px + "px");
  2268. Helper.isseted = true;
  2269. }
  2270.  
  2271. } else {
  2272. for (let item of $(".zdy-commands").children()) {
  2273. if (item.textContent == zmlitem.name) {
  2274. item.remove();
  2275. }
  2276. }
  2277. }
  2278.  
  2279. if (zmlitem.zmlShow == 1) {
  2280.  
  2281. a.append("<span class=\"zdy-item act-item-zdy\" zml=\"" + zmlitem.zmlRun + "\">" + zmlitem.name + "</span>")
  2282. messageAppend("设置快速使用" + zmlitem.name, 1);
  2283. //绑定事件
  2284. $('.act-item-zdy').off('click');
  2285. $(".act-item-zdy").on('click', function () {
  2286. T.usezml(0, this.textContent, "");
  2287. });
  2288. }
  2289. }
  2290. },
  2291. ztjk_edit: function () {
  2292.  
  2293. //[{"name":"","type":"state","action":"remove","keyword":"busy","ishave":"0","send":""}]
  2294. ztjk_item = GM_getValue(role + "_ztjk", ztjk_item);
  2295. messageClear();
  2296. var edithtml = UI.ztjksetting;
  2297. messageAppend(edithtml);
  2298. $('.ztjk_editadd').on("click", function () {
  2299. var ztjk = {
  2300. name: $('#ztjk_name').val(),
  2301. type: $('#ztjk_type').val(),
  2302. action: $('#ztjk_action').val(),
  2303. keyword: $('#ztjk_keyword').val(),
  2304. ishave: $('#ztjk_ishave').val(),
  2305. send: $('#ztjk_send').val(),
  2306. senduser: $('#ztjk_senduser').val(),
  2307. isactive: 1,
  2308. maxcount: $('#ztjk_maxcount').val()
  2309. };
  2310. let _flag = true;
  2311. ztjk_item.forEach(function (v, k) {
  2312. if (v.name == $('#ztjk_name').val()) {
  2313. ztjk_item[k] = ztjk;
  2314. _flag = false;
  2315. }
  2316. });
  2317. if (_flag) {
  2318. ztjk_item.push(ztjk);
  2319. }
  2320. GM_setValue(role + "_ztjk", ztjk_item);
  2321. Helper.ztjk_func();
  2322. });
  2323. $(".ztjk_editdel").on('click', function () {
  2324. let name = $('#ztjk_name').val();
  2325. ztjk_item.forEach(function (v, k) {
  2326. if (v.name == name) {
  2327. ztjk_item.baoremove(k);
  2328. GM_setValue(role + "_ztjk", ztjk_item);
  2329. Helper.ztjk_edit();
  2330. messageAppend("删除成功", 2);
  2331. Helper.ztjk_func();
  2332. }
  2333. });
  2334. })
  2335. ztjk_item.forEach(function (v, k) {
  2336. var btn = "<span class='addrun" + k + "'>编辑" + v.name + "</span>";
  2337. $('#ztjk_show').append(btn);
  2338. var tmptext = "注入";
  2339. if (v.isactive && v.isactive == 1) {
  2340. tmptext = "暂停";
  2341. }
  2342. var setbtn = "<span class='setaction" + k + "'>" + tmptext + v.name + "</span>";
  2343. $('#ztjk_set').append(setbtn);
  2344. });
  2345. ztjk_item.forEach(function (v, k) {
  2346. $(".addrun" + k).on("click", function () {
  2347. $('#ztjk_name').val(v.name);
  2348. $('#ztjk_type').val(v.type);
  2349. $('#ztjk_action').val(v.action);
  2350. $('#ztjk_keyword').val(v.keyword);
  2351. $('#ztjk_ishave').val(v.ishave);
  2352. $('#ztjk_send').val(v.send);
  2353. $('#ztjk_senduser').val(v.senduser);
  2354. $("#ztjk_maxcount").val(v.maxcount);
  2355. });
  2356. $('.setaction' + k).on('click', function () {
  2357. if (this.textContent.indexOf("暂停") >= 0) {
  2358. ztjk_item[k].isactive = 0;
  2359. } else {
  2360. ztjk_item[k].isactive = 1;
  2361. }
  2362. GM_setValue(role + "_ztjk", ztjk_item);
  2363. Helper.ztjk_func();
  2364. Helper.ztjk_edit();
  2365. })
  2366. });
  2367.  
  2368. },
  2369. ztjk_hook: undefined,
  2370. ztjk_func: function () {
  2371. if (Helper.ztjk_hook) {
  2372. WG.remove_hook(Helper.ztjk_hook);
  2373. }
  2374. Helper.ztjk_hook = undefined;
  2375. ztjk_item = GM_getValue(role + "_ztjk", ztjk_item);
  2376. Helper.ztjk_hook = WG.add_hook(["enapfm", "dialog", "room", "itemadd", "itemremove", "status", "text", "msg", "die", "combat", "sc"], function (data) {
  2377. ztjk_item.forEach(function (v, k) {
  2378. if (v.isactive != 1) {
  2379. return;
  2380. }
  2381. if (data.type == v.type) {
  2382. let keywords = v.keyword.split("|");
  2383. switch (v.type) {
  2384. case "status":
  2385. if (!data.name) {
  2386. if (v.action == data.action) {
  2387. for (var keyworditem of keywords) {
  2388. if (data.sid.indexOf(keyworditem) >= 0) {
  2389. if (v.ishave == "0" && data.id != G.id) {
  2390. messageAppend("已触发" + v.name, 1);
  2391. WG.SendCmd(v.send);
  2392. } else if (v.ishave == "1" && data.id == G.id) {
  2393. if (data.count != undefined && v.maxcount) {
  2394. if (parseInt(data.count) < parseInt(v.maxcount)) {
  2395. messageAppend("已触发" + v.name, 1);
  2396. WG.SendCmd(v.send);
  2397. }
  2398. } else {
  2399. messageAppend("已触发" + v.name, 1);
  2400. WG.SendCmd(v.send);
  2401. }
  2402. }
  2403. }
  2404. }
  2405. }
  2406. } else {
  2407. if (v.action == data.action) {
  2408. for (var keyworditem of keywords) {
  2409. if (data.sid.indexOf(keyworditem) >= 0 || data.name.indexOf(keyworditem) >= 0) {
  2410. if (v.ishave == "0" && data.id != G.id) {
  2411. messageAppend("已触发" + v.name, 1);
  2412. WG.SendCmd(v.send);
  2413. } else if (v.ishave == "1" && data.id == G.id) {
  2414. messageAppend("已触发" + v.name, 1);
  2415. WG.SendCmd(v.send);
  2416. }
  2417. }
  2418. }
  2419. }
  2420. }
  2421. break;
  2422. case "text":
  2423. for (var keyworditem of keywords) {
  2424. if (data.msg.indexOf(keyworditem) >= 0) {
  2425. messageAppend("已触发" + v.name, 1);
  2426. WG.SendCmd(v.send);
  2427. }
  2428. }
  2429. break;
  2430. case "msg":
  2431. if (!v.senduser) {
  2432. return;
  2433. }
  2434. let sendusers = v.senduser.split("|");
  2435. for (let item of sendusers) {
  2436. if (data.name == item) {
  2437. for (var keyworditem of keywords) {
  2438. if (data.content.indexOf(keyworditem) >= 0) {
  2439. messageAppend("已触发" + v.name, 1);
  2440. WG.SendCmd(v.send);
  2441. }
  2442. }
  2443. } else if (item == "谣言" && data.ch == "rumor") {
  2444. for (var keyworditem of keywords) {
  2445. if (data.content.indexOf(keyworditem) >= 0) {
  2446. messageAppend("已触发" + v.name, 1);
  2447. WG.SendCmd(v.send);
  2448. }
  2449. }
  2450. } else if (item == "系统" && data.ch == 'sys') {
  2451. for (var keyworditem of keywords) {
  2452. if (data.content.indexOf(keyworditem) >= 0) {
  2453. messageAppend("已触发" + v.name, 1);
  2454. WG.SendCmd(v.send);
  2455. }
  2456. }
  2457. }
  2458. }
  2459. break;
  2460.  
  2461. case "die":
  2462. messageAppend("已触发" + v.name, 1);
  2463. WG.SendCmd(v.send);
  2464. break;
  2465. case "itemadd":
  2466. for (var keyworditem of keywords) {
  2467. if (data.name.indexOf(keyworditem) >= 0) {
  2468. messageAppend("已触发" + v.name, 1);
  2469. WG.SendCmd(v.send);
  2470. }
  2471. }
  2472. break;
  2473. case "room":
  2474. for (var keyworditem of keywords) {
  2475. if (data.name.indexOf(keyworditem) >= 0) {
  2476. messageAppend("已触发" + v.name, 1);
  2477. WG.SendCmd(v.send);
  2478. }
  2479. }
  2480. break;
  2481. case "dialog":
  2482. if (data.dialog && data.dialog == "pack") {
  2483. for (var keyworditem of keywords) {
  2484. if (data.name && data.name.indexOf(keyworditem) >= 0) {
  2485. messageAppend("已触发" + v.name, 1);
  2486. WG.SendCmd(v.send);
  2487. }
  2488. }
  2489. }
  2490. break;
  2491. case "combat":
  2492. for (var keyworditem of keywords) {
  2493. if (keyworditem == "start" && data.start == 1) {
  2494. messageAppend("已触发" + v.name, 1);
  2495. WG.SendCmd(v.send);
  2496. } else if (keyworditem == "end" && data.end == 1) {
  2497. messageAppend("已触发" + v.name, 1);
  2498. WG.SendCmd(v.send);
  2499. }
  2500. }
  2501. break;
  2502. case "sc":
  2503. let item = G.items.get(G.id);
  2504. if (v.ishave == "0") {
  2505. //查找id
  2506. if (!v.senduser) {}
  2507. let pid = Helper.find_item(v.senduser);
  2508. item = G.items.get(pid);
  2509. }
  2510. if (item && item.hp) {
  2511. if ((item.hp / item.max_hp) * 100 < (parseInt(keywords[0]))) {
  2512. messageAppend("已触发" + v.name, 1);
  2513. WG.SendCmd(v.send);
  2514. }
  2515. }
  2516. if (item && item.mp) {
  2517. if ((item.mp / item.max_mp) * 100 < (parseInt(keywords[1]))) {
  2518. messageAppend("已触发" + v.name, 1);
  2519. WG.SendCmd(v.send);
  2520. }
  2521. }
  2522. break;
  2523. case "enapfm":
  2524. for(let item of keywords){
  2525. if(item == data.id){
  2526. messageAppend("已触发" + v.name, 1);
  2527. WG.SendCmd(v.send);
  2528. }
  2529. }
  2530. break;
  2531. default:
  2532. break;
  2533. }
  2534. }
  2535. });
  2536.  
  2537. });
  2538. messageAppend("已重新注入自动监控");
  2539. },
  2540. daily_hook: undefined,
  2541. oneKeyDaily: async function () {
  2542. messageAppend("本脚本会自动执行师门及自动进退小树林,请确保精力足够再执行", 1);
  2543. Helper.daily_hook = WG.add_hook("dialog", async function (data) {
  2544. if (data.dialog == "tasks") {
  2545. if (data.items) {
  2546. let dailylog = data.items[1].desc;
  2547. let dailystate = data.items[1].state;
  2548. if (dailystate == 3) {
  2549. messageAppend("日常已完成", 1);
  2550. //WG.zdwk();
  2551. WG.remove_hook(Helper.daily_hook);
  2552. Helper.daily_hook = undefined;
  2553. } else {
  2554. let str = dailylog;
  2555. str = str.replace(/<(?!\/?p\b)[^>]+>/ig, '');
  2556. let str1 = str.split("副本");
  2557.  
  2558. let n = str1[0].match(":([^%]+)/20")[1];
  2559. let n1 = str1[1].match(":([^%]+)/20")[1];
  2560. n = 20 - parseInt(n);
  2561. n1 = 20 - parseInt(n1);
  2562. messageAppend("还需要" + n + "次师门任务," + n1 + "次副本,才可签到");
  2563. if (n != 0) {
  2564. $(".sm_button").click();
  2565. }
  2566. await WG.sleep(2000);
  2567. while ($(".sm_button").text().indexOf("停止") >= 0) {
  2568. await WG.sleep(2000);
  2569. }
  2570.  
  2571. WG.grove_auto(n1);
  2572.  
  2573. // WG.remove_hook(Helper.daily_hook);
  2574. // Helper.daily_hook = undefined;
  2575. }
  2576.  
  2577. }
  2578. }
  2579. });
  2580. WG.Send("stopstate");
  2581. var sxplace = sm_array[family].sxplace;
  2582. var sx = sm_array[family].sx;
  2583. if (sxplace.indexOf("-") == 0) {
  2584. WG.Send(sxplace.replace('-', ''));
  2585. } else {
  2586. WG.go(sxplace);
  2587. }
  2588. await WG.sleep(1000);
  2589. WG.SendCmd("ask2 $findPlayerByName(\"" + sx + "\")");
  2590. await WG.sleep(1000);
  2591. KEY.do_command("tasks");
  2592. KEY.do_command("tasks");
  2593. },
  2594. sd_hook: undefined,
  2595. oneKeySD: function () {
  2596. messageAppend("本脚本自动执行购买扫荡符,进行追捕扫荡,请确保元宝足够\n注意! 超过上限会自动放弃", 1);
  2597. Helper.sd_hook = WG.add_hook(["dialog", "text"], async function (data) {
  2598. if (data.type = 'text' && data.msg) {
  2599. if (data.msg.indexOf("无法快速完") >= 0) {
  2600. WG.SendCmd("ask1 $pname(\"程药发\")");
  2601. await WG.sleep(2000);
  2602. WG.SendCmd("ask2 $pname(\"程药发\")");
  2603. await WG.sleep(2000);
  2604. WG.SendCmd("ask3 $pname(\"程药发\")");
  2605. messageAppend("追捕已完成", 1);
  2606. await WG.sleep(2000);
  2607. WG.zdwk();
  2608. WG.remove_hook(Helper.sd_hook);
  2609. Helper.sd_hook = undefined;
  2610. }
  2611. //<hig>你的追捕任务完成了,目前完成20/20个,已连续完成40个。</hig>
  2612. if (data.msg.indexOf("追捕任务完成了") >= 0) {
  2613. let str = data.msg;
  2614. str = str.replace(/<(?!\/?p\b)[^>]+>/ig, '');
  2615. let n = str.match("目前完成([^%]+)/20")[1];
  2616. if (n == "20") {
  2617. messageAppend("追捕已完成", 1);
  2618. await WG.sleep(2000);
  2619. WG.remove_hook(Helper.sd_hook);
  2620. Helper.sd_hook = undefined;
  2621. }
  2622. }
  2623. }
  2624. if (data.dialog == "tasks") {
  2625. if (data.items) {
  2626. let dailylog = data.items[3].desc;
  2627.  
  2628. let str = dailylog;
  2629. str = str.replace(/<(?!\/?p\b)[^>]+>/ig, '');
  2630.  
  2631. let n = str.match("完成([^%]+)/20")[1];
  2632. n = 20 - parseInt(n);
  2633. if (n == 0) {
  2634. messageAppend("追捕已完成", 1);
  2635. WG.zdwk();
  2636. WG.remove_hook(Helper.sd_hook);
  2637. Helper.sd_hook = undefined;
  2638. return;
  2639. } else {
  2640. messageAppend("还需要" + n + "次扫荡,自动购入" + n + "张扫荡符");
  2641. await WG.sleep(2000);
  2642. WG.Send("shop 0 " + n);
  2643. WG.go("扬州城-衙门正厅");
  2644. await WG.sleep(2000);
  2645. WG.SendCmd("ask3 $pname(\"程药发\")");
  2646. await WG.sleep(2000);
  2647. WG.remove_hook(Helper.sd_hook);
  2648. Helper.sd_hook = undefined;
  2649. }
  2650.  
  2651. }
  2652. }
  2653. });
  2654. WG.Send("stopstate");
  2655. KEY.do_command("tasks");
  2656. KEY.do_command("tasks");
  2657. },
  2658. yj_hook: undefined,
  2659. oneKeyyj: async function () {
  2660. WG.SendCmd("stopstate;$to 扬州城-药铺;$wait 1000;buy 10 " +
  2661. goods["养精丹"].id +
  2662. " from " +
  2663. npcs["药铺老板 平一指"] +
  2664. ";$wait 1000");
  2665. await WG.sleep(4000);
  2666. let lyj = '';
  2667. let byj = '';
  2668. Helper.yj_hook = WG.add_hook("dialog", function (data) {
  2669. if (data.items) {
  2670. for (let item of data.items) {
  2671. if (item.name == '<hic>养精丹</hic>') {
  2672. byj = item.id;
  2673. }
  2674. if (item.name == "<hig>养精丹</hig>") {
  2675. lyj = item.id;
  2676. }
  2677. }
  2678. let send = '';
  2679. for (let i = 0; i < 10; i++) {
  2680. send += "$wait 500;use " + lyj + ";$wait 500;use " + byj + ";";
  2681. }
  2682. WG.SendCmd(send);
  2683. }
  2684. WG.remove_hook(Helper.yj_hook);
  2685. });
  2686. WG.Send("pack");
  2687. await WG.sleep(20000);
  2688. }
  2689.  
  2690.  
  2691. };
  2692. //助手函数
  2693. var T = {
  2694. //private
  2695. _recmd: function (cmds) {
  2696. if (cmds) {
  2697. cmds = cmds instanceof Array ? cmds : cmds.split(';');
  2698. cmds.baoremove(0);
  2699. cmds = cmds.join(";");
  2700. return cmds;
  2701. } else {
  2702. return "";
  2703. }
  2704. },
  2705. recmd: function (idx, cmds) {
  2706. for (let i = 0; i < idx + 1; i++) {
  2707. cmds = T._recmd(cmds);
  2708. }
  2709. return cmds;
  2710. },
  2711. findhook: undefined,
  2712. _findItem: async function (itemname, callback) {
  2713. console.log("finditem" + itemname);
  2714. T.findhook = WG.add_hook("dialog", async function (data) {
  2715. if (data.items) {
  2716. for (let item of data.items) {
  2717. if (item.name == itemname) {
  2718. callback(item.id);
  2719. WG.remove_hook(T.findhook);
  2720. }
  2721. }
  2722. callback("");
  2723. }
  2724. WG.remove_hook(T.findhook);
  2725. });
  2726.  
  2727. WG.Send("pack");
  2728. },
  2729. //public
  2730. pname: function (idx = 0, n, cmds) {
  2731. T.findPlayerByName(idx, n, cmds);
  2732. },
  2733. findPlayerByName: function (idx = 0, n, cmds) {
  2734. cmds = T.recmd(idx - 1, cmds);
  2735. if (cmds.indexOf(",") >= 0) {
  2736. cmds = cmds.split(",");
  2737. } else {
  2738. cmds = cmds.split(";");
  2739. }
  2740. let p = cmds[0].split(" ")[0];
  2741. cmds = T.recmd(0, cmds);
  2742. n = n.replace("-", " ");
  2743. console.log("findPlayerByName" + n);
  2744.  
  2745. for (let i = 0; i < roomData.length; i++) {
  2746. if (roomData[i].name && roomData[i].name.indexOf(n) >= 0) {
  2747. WG.Send(p + " " + roomData[i].id);
  2748. }
  2749. }
  2750. WG.SendCmd(cmds);
  2751. },
  2752. findItem: async function (idx = 0, n, cmds) {
  2753. cmds = T.recmd(idx - 1, cmds);
  2754. if (cmds.indexOf(",") >= 0) {
  2755. cmds = cmds.split(",");
  2756. } else {
  2757. cmds = cmds.split(";");
  2758. }
  2759. let p = cmds[0].split(" ")[0];
  2760. cmds = T.recmd(0, cmds);
  2761. console.log("finditem" + n);
  2762. T.findhook = WG.add_hook("dialog", async function (data) {
  2763. if (data.items) {
  2764. for (let item of data.items) {
  2765. if (item.name == n) {
  2766. if (p == "fenjie" || p == "drop") {
  2767. if (item.name.indexOf("★") >= 0) {
  2768. messageAppend("高级物品 ,不分解");
  2769. continue;
  2770. }
  2771. }
  2772. WG.SendCmd(p + " " + item.id);
  2773. }
  2774. }
  2775. }
  2776. WG.remove_hook(T.findhook);
  2777. await WG.sleep(20);
  2778. WG.SendCmd(cmds);
  2779. });
  2780. WG.Send("pack");
  2781.  
  2782. },
  2783. wait: async function (idx = 0, n, cmds) {
  2784. cmds = T.recmd(idx, cmds);
  2785. console.log("延时:" + n + "ms,延时触发:" + cmds);
  2786. await WG.sleep(parseInt(n));
  2787. WG.SendCmd(cmds);
  2788. },
  2789. killall: async function (idx = 0, n = null, cmds) {
  2790. cmds = T.recmd(idx, cmds);
  2791. console.log("叫杀");
  2792. WG.kill_all();
  2793. await WG.sleep(100);
  2794. WG.SendCmd(cmds);
  2795. },
  2796. getall: async function (idx = 0, n = null, cmds) {
  2797. cmds = T.recmd(idx, cmds);
  2798. console.log("拾取");
  2799. WG.get_all();
  2800. await WG.sleep(100);
  2801. WG.SendCmd(cmds);
  2802. },
  2803. cleanall: async function (idx = 0, n = null, cmds) {
  2804. cmds = T.recmd(idx, cmds);
  2805. console.log("清包");
  2806. WG.clean_all();
  2807. await WG.sleep(100);
  2808. WG.SendCmd(cmds);
  2809. },
  2810. to: async function (idx = 0, n, cmds) {
  2811. cmds = T.recmd(idx, cmds);
  2812. WG.go(n);
  2813. await WG.sleep(100);
  2814. WG.SendCmd(cmds);
  2815. },
  2816. eq: async function (idx = 0, n, cmds) {
  2817. cmds = T.recmd(idx, cmds);
  2818. if (n == "0") {
  2819. Helper.uneqall();
  2820. } else {
  2821. Helper.eqhelper(n);
  2822. }
  2823. await WG.sleep(100);
  2824. WG.SendCmd(cmds);
  2825. },
  2826. zdwk: async function (idx = 0, n, cmds) {
  2827. cmds = T.recmd(idx, cmds);
  2828. WG.zdwk();
  2829. await WG.sleep(100);
  2830. WG.SendCmd(cmds);
  2831. },
  2832. killhook: undefined,
  2833. killw: async function (idx = 0, n, cmds) {
  2834. cmds = T.recmd(idx, cmds);
  2835. var killid = "";
  2836. for (let i = 0; i < roomData.length; i++) {
  2837. if (roomData[i].name && roomData[i].name.indexOf(n) >= 0) {
  2838. killid = roomData[i].id;
  2839. }
  2840. }
  2841. T.killhook = WG.add_hook('itemremove', function (data) {
  2842. if (data.id == killid) {
  2843. WG.SendCmd(cmds);
  2844. WG.remove_hook(T.killhook);
  2845. T.killhook = undefined;
  2846. }
  2847. });
  2848. WG.SendCmd("kill " + killid);
  2849. },
  2850. eqhook: undefined,
  2851. eqw: async function (idx = 0, n, cmds) {
  2852. var pcmds = T.recmd(idx, cmds);
  2853. T._findItem(n, async function (id) {
  2854. let p_itemid = id;
  2855. let p_flag = true;
  2856. if (p_itemid == "") {
  2857. p_flag = false;
  2858. WG.SendCmd(pcmds);
  2859. return;
  2860. }
  2861. T.eqhook = WG.add_hook('dialog', function (data) {
  2862. if (data.eq == 0 && data.id == p_itemid) {
  2863. p_flag = false;
  2864. WG.SendCmd(pcmds);
  2865. WG.remove_hook(T.eqhook);
  2866. T.eqhook = undefined;
  2867. }
  2868. });
  2869. while (p_flag) {
  2870. WG.SendCmd('eq ' + p_itemid);
  2871. await WG.sleep(1000);
  2872. }
  2873.  
  2874. });
  2875. },
  2876. usezml: async function (idx = 0, n, cmds) {
  2877. cmds = T.recmd(idx, cmds);
  2878. zml = GM_getValue(role + "_zml", zml);
  2879. for (var zmlitem of zml) {
  2880. if (zmlitem.name == n) {
  2881. await WG.SendCmd(zmlitem.zmlRun);
  2882. }
  2883. }
  2884. await WG.sleep(100);
  2885. WG.SendCmd(cmds);
  2886. },
  2887. waitpfm: async function (idx = 0, n, cmds) {
  2888. cmds = T.recmd(idx, cmds);
  2889. let _flag = true;
  2890. while (_flag) {
  2891. if (!G.gcd && !G.cds.get(n)) {
  2892. WG.Send("perform " + n);
  2893. _flag = false;
  2894. await WG.sleep(100);
  2895. WG.SendCmd(cmds);
  2896. }
  2897. await WG.sleep(200);
  2898. }
  2899. },
  2900. startjk: async function (idx = 0, n, cmds) {
  2901. cmds = T.recmd(idx, cmds);
  2902. ztjk_item = GM_getValue(role + "_ztjk", ztjk_item);
  2903. for (var item of ztjk_item) {
  2904. if (item.name == n) {
  2905. item.isactive = 1;
  2906. GM_setValue(role + "_ztjk", ztjk_item);
  2907. Helper.ztjk_func();
  2908. messageAppend("已注入" + item.name);
  2909. break;
  2910. }
  2911. }
  2912. await WG.sleep(100);
  2913. WG.SendCmd(cmds);
  2914. },
  2915. stopjk: async function (idx = 0, n, cmds) {
  2916. cmds = T.recmd(idx, cmds);
  2917. ztjk_item = GM_getValue(role + "_ztjk", ztjk_item);
  2918. for (var item of ztjk_item) {
  2919. if (item.name == n) {
  2920. item.isactive = 0;
  2921. GM_setValue(role + "_ztjk", ztjk_item);
  2922. Helper.ztjk_func();
  2923. messageAppend("已暂停" + item.name);
  2924. break;
  2925. }
  2926. }
  2927. await WG.sleep(100);
  2928. WG.SendCmd(cmds);
  2929. },
  2930. sm: async function (idx = 0, n, cmds) {
  2931. cmds = T.recmd(idx, cmds);
  2932. WG.sm_button();
  2933.  
  2934. while ($('.sm_button').text().indexOf("停止") >= 0) {
  2935. await WG.sleep(1000);
  2936. }
  2937. await WG.sleep(100);
  2938. WG.SendCmd(cmds);
  2939. },
  2940. daily: async function (idx = 0, n, cmds) {
  2941. cmds = T.recmd(idx, cmds);
  2942. await Helper.oneKeyyj();
  2943. Helper.oneKeyDaily();
  2944. await WG.sleep(1000);
  2945. while (Helper.daily_hook) {
  2946. await WG.sleep(1000);
  2947. }
  2948. await WG.sleep(1000);
  2949. Helper.oneKeySD();
  2950. while (Helper.sd_hook) {
  2951. await WG.sleep(1000);
  2952. }
  2953.  
  2954. await WG.sleep(100);
  2955. WG.SendCmd(cmds);
  2956. },
  2957. xiyan: async function (idx = 0, n, cmds) {
  2958. cmds = T.recmd(idx, cmds);
  2959. Helper.xiyan();
  2960. await WG.sleep(1000);
  2961. while (Helper.marryhy) {
  2962. await WG.sleep(1000);
  2963. }
  2964. await WG.sleep(100);
  2965. WG.SendCmd(cmds);
  2966. }
  2967.  
  2968. };
  2969. var ProConsole = {
  2970. init: function () {
  2971. //判断
  2972. if (!L.isMobile()) {
  2973. layer.open({
  2974. type: 1,
  2975. title: "运行命令",
  2976. shade: false,
  2977. offset: "rb",
  2978. zIndex: 961024,
  2979. success: function (layero, index) {
  2980. layer.style(index, {
  2981. marginLeft: -220,
  2982. });
  2983. },
  2984. content: $(".runtest")
  2985. });
  2986. $("#runtesta").on('click', function () {
  2987. if ($('#testmain').val().split("\n")[0].indexOf("//") >= 0) {
  2988. if (ToRaid) {
  2989. ToRaid.perform($('#testmain').val());
  2990. }
  2991. } else {
  2992. WG.SendCmd($('#testmain').val());
  2993. }
  2994. });
  2995. }
  2996.  
  2997. }
  2998.  
  2999. }
  3000. //UI
  3001. var UI = {
  3002. codeInput: `<div class="runtest layui-layer-wrap" style="display: none;">
  3003. <textarea class="site-demo-text" id="testmain" data-enpassusermodified="yes">//<-第一行输入双斜杠即可运行流程命令\n</textarea>
  3004. <a class="layui-btn layui-btn-normal" id="runtesta" >立即运行</a>
  3005. </div>`,
  3006. btnui: `
  3007. <div class='WG_log'><pre></pre></div>
  3008. <div class='WG_button'>
  3009. <span class='zdy-item sm_button'>师门Q</span>
  3010. <span class='zdy-item go_yamen_task'>追捕W</span>
  3011. <span class='zdy-item kill_all'>击杀E</span>
  3012. <span class='zdy-item get_all'>拾取R</span>
  3013. <span class='zdy-item sell_all'>清包T</span>
  3014. <span class='zdy-item zdwk'>挖矿Y</span>
  3015. <span class = "zdy-item auto_perform" style = "float:right;" >自动攻击</span>
  3016. <span class="zdy-item cmd_echo" style="float:right;">代码</span>
  3017. </div>
  3018. `,
  3019. syssetting: `<div class="zdy_dialog" style="text-align:right;width:280px">
  3020. 有空的话请点个star,您的支持是我最大的动力<a href="https://github.com/knva/wsmud_plugins" target="_blank">https://github.com/knva/wsmud_plugins</a>
  3021. <span>
  3022. <label for="family">门派选择:</label><select id="family" style="width:80px">
  3023. <option value="武当">武当</option>
  3024. <option value="华山">华山</option>
  3025. <option value="少林">少林</option>
  3026. <option value="峨嵋">峨嵋</option>
  3027. <option value="逍遥">逍遥</option>
  3028. <option value="丐帮">丐帮</option>
  3029. <option value="武馆">武馆</option>
  3030. </select>
  3031. </span>
  3032. <span><label for="sm_loser">师门自动放弃: </label><select id="sm_loser" style="width:80px">
  3033. <option value="已停止">已停止</option>
  3034. <option value="已开启">已开启</option>
  3035. </select>
  3036. </span>
  3037. <span> <label for="zmlshowsetting"> 自命令显示位置: </label><select id="zmlshowsetting" style="width:80px">
  3038. <option value="0"> 物品栏 </option>
  3039. <option value="1"> 技能栏下方 </option>
  3040. </select>
  3041. </span>
  3042. <span><label for="wudao_pfm">武道自动攻击: </label><input id="wudao_pfm" name="wudao_pfm" type="text" style="width:80px" value>
  3043. </span>
  3044. <span><label for="getitemShow">显示获得物品: </label><select id="getitemShow" style="width:80px">
  3045. <option value="已停止"> 已停止 </option>
  3046. <option value="已开启"> 已开启 </option>
  3047. </select>
  3048. </span>
  3049. <span><label for="marry_kiss">自动喜宴: </label><select id="marry_kiss" style="width:80px">
  3050. <option value="已停止">已停止</option>
  3051. <option value="已开启">已开启</option>
  3052. </select>
  3053. </span>
  3054. <span><label for="ks_Boss">自动传到boss </label><select id="ks_Boss" style="width:80px">
  3055. <option value="已停止">已停止</option>
  3056. <option value="已开启">已开启</option>
  3057. </select>
  3058. </span>
  3059. <span><label for="auto_eq">BOSS击杀时自动换装: </label><select id="auto_eq" style="width:80px">
  3060. <option value="0">已停止</option>
  3061. <option value="1">套装1</option>
  3062. <option value="2">套装2</option>
  3063. <option value="3">套装3</option>
  3064. </select>
  3065. </span>
  3066. <span><label for="ks_pfm">叫杀延时(ms): </label><input id="ks_pfm" name="ks_pfm" type="text" style="width:80px" value>
  3067. </span>
  3068. <span> <label for="autopfmswitch"> 自动施法开关: </label><select id="autopfmswitch" style="width:80px">
  3069. <option value="已停止"> 已停止 </option>
  3070. <option value="已开启"> 已开启 </option>
  3071. </select>
  3072. </span>
  3073. <span><label for="unautopfm"> 自动施法黑名单(使用半角逗号分隔): </label>
  3074. <textarea class="settingbox hide zdy-box" id="unauto_pfm" name="unauto_pfm" style="display: inline-block;"> </textarea>
  3075. </span>
  3076.  
  3077. <label for="store_info"> 输入自动存储的物品名称(使用半角逗号分隔):</label>
  3078. <textarea class="settingbox hide zdy-box" id="store_info" style="display: inline-block;"> </textarea>
  3079. <label for="auto_command"> 输入喜宴及boss后命令(留空为自动挖矿或修炼):</label>
  3080. <textarea class="settingbox hide zdy-box" id="auto_command" style="display: inline-block;"> </textarea>
  3081. <label for="blacklist"> 输入黑名单boss名称(用半角逗号分隔):</label>
  3082. <textarea class="settingbox hide zdy-box" id="blacklist" style="display: inline-block;"> </textarea>
  3083. <div class="item-commands"><span class="updete_id_all">初始化ID</span></div>
  3084. </div>
  3085. `,
  3086. zmlsetting: `<div class='zdy_dialog' style='text-align:right;width:280px'>
  3087. <span><label for="zml_name"> 输入自定义命令名称:</label></span>
  3088. <span><input id ="zml_name" style='width:80px' type="text" name="zml_name" value=""></span>
  3089. <span><label for="zml_info"> 输入自定义命令(用半角分号(;)分隔):</label></span>
  3090. <textarea class = "settingbox hide zdy-box"style = "display: inline-block;"id = 'zml_info'></textarea>
  3091. <div class = "item-commands"> <span class = "editadd" > 保存 </span> <span class = "editdel"> 删除 </span> </div>
  3092. <div class = "item-commands" id = "zml_show"></div>
  3093. </div> `,
  3094. zmlandztjkui: `<div class='zdy_dialog' style='text-align:right;width:280px'>
  3095. <div class = "item-commands" > <span class = "editzml" > 编辑自命令 </span> </div>
  3096. <div class = "item-commands" > <span class = "editztjk" > 编辑自定义监控 </span>
  3097. <span class = "startzdjk" > 注入所有监控 </span>
  3098. <span class = "stopzdjk" > 暂停所有监控 </span> </div>
  3099. <div class = "item-commands" id = "zml_show"></div>
  3100.  
  3101. </div>`,
  3102. ztjksetting: `<div class='zdy_dialog' style='text-align:right;width:280px'>
  3103. <span><label> 请打开插件首页,查看文档及例子,本人血量状态监控 请按如下规则输入关键字 90|90 这样监控的是hp 90% mp 90% 以下触发</label></span>
  3104. <span><label for="ztjk_name"> 名称:</label><input id ="ztjk_name" style='width:80px' type="text" name="ztjk_name" value=""></span>
  3105. <span><label for="ztjk_type"> 类型(type):</label><select style = 'width:80px' id = "ztjk_type" >
  3106. <option value = "status" > 状态(status) </option>
  3107. <option value = "text" > 文本(text) </option>
  3108. <option value = "msg" > 聊天(msg) </option>
  3109. <option value = "die" > 死亡(die) </option>
  3110. <option value = "itemadd" > 人物刷新(itemadd) </option>
  3111. <option value = "room" > 地图切换(room) </option>
  3112. <option value = "dialog" > 背包切换(dialog) </option>
  3113. <option value = "combat" > 战斗状态(combat) </option>
  3114. <option value = "sc" > 血量状态(sc) </option>
  3115. <option value = "enapfm" > 技能监控(enapfm) </option>
  3116. </select></span>
  3117. <span id='actionp' style='display:block'><label for="ztjk_action"> 动作(action):</label><input id ="ztjk_action" style='width:80px' type="text" name="ztjk_action" value=""></span>
  3118. <span><label for="ztjk_keyword"> 关键字(使用半角 | 分割):</label><input id ="ztjk_keyword" style='width:80px' type="text" name="ztjk_keyword" value=""></span>
  3119. <span><label for = "ztjk_ishave" > 触发对象: </label><select style = 'width:80px' id = "ztjk_ishave" >
  3120. <option value = "0" > 其他人 </option>
  3121. <option value = "1" > 本人 </option>
  3122. </select></span>
  3123. <span id='senduserp' style='display:block'><label for="ztjk_senduser"> MSG/其他人名称(使用半角 | 分割):</label><input id ="ztjk_senduser" style="width:80px;" type="text" name="ztjk_senduser" value=""></span>
  3124. <span style='display:block'><label> Buff层数:</label><input id ="ztjk_maxcount" style="width:80px;" type="text" name="ztjk_maxcount" value=""></span>
  3125. <span><label for="ztjk_send"> 输入自定义命令(用半角分号(;)分隔):</label></span>
  3126. <textarea class = "settingbox hide zdy-box"style = "display: inline-block;"id = 'ztjk_send'></textarea>
  3127. <div class = "item-commands" > <span class = "ztjk_editadd" > 保存 </span> <span class = "ztjk_editdel" > 删除 </span></div>
  3128. <div class = "item-commands" id = "ztjk_show"></div>
  3129. <div class = "item-commands" id = "ztjk_set"></div>
  3130. </div> `,
  3131. jsqui: `<div class='zdy_dialog'>
  3132. <div style="width:50%;float:left">
  3133. <span>潜能计算器</span>
  3134. <input type="number" id="c" placeholder="初始等级" style="width:50%" class="mui-input-speech"><br/>
  3135. <input type="number" id="m" placeholder="目标等级" style="width:50%"><br/>
  3136. <select id="se" style="width:50%">
  3137. <option value='0'>选择技能颜色</option>
  3138. <option value='1' style="color: #c0c0c0;">白色</option>
  3139. <option value='2' style="color:#00ff00;">绿色</option>
  3140. <option value='3' style="color:#00ffff;">蓝色</option>
  3141. <option value='4' style="color:#ffff00;">黄色</option>
  3142. <option value='5' style="color:#912cee;">紫色</option>
  3143. <option value='6' style="color: #ffa600;">橙色</option>
  3144. </select><br/>
  3145. <input type="button" value="计算" style="width:50%" id="qnjs"><br/>
  3146. </div>
  3147. <div style="width:50%;float:left">
  3148. <span>开花计算器</span>
  3149. <input type="number" id="nl" placeholder="当前内力" style="width:50%" class="mui-input-speech"><br/>
  3150. <input type="number" id="xg" placeholder="先天根骨" style="width:50%"><br/>
  3151. <input type="number" id="hg" placeholder="后天根骨" style="width:50%"><br/>
  3152. <input type="button" value="计算" id = "kaihua" style="width:50%" <br/>
  3153. <label>人花分值:5000 地花分值:6500 天花分值:8000</label>
  3154. </div>
  3155.  
  3156. </div>`,
  3157. lyui: `<div class='zdy_dialog' style='text-align:right;width:280px'>
  3158. 有空的话请点个star,您的支持是我最大的动力
  3159. <a target="_blank" href="https://github.com/knva/wsmud_plugins">https://github.com/knva/wsmud_plugins</a>
  3160. 药方链接:<a target="_blank" href="https://suqing.fun/wsmud/yaofang/">https://suqing.fun/wsmud/yaofang/</a>
  3161. <span>
  3162. <label for = "medicine_level" > 级别选择: </label><select style='width:80px' id="medicine_level">
  3163. <option value="1">绿色</option>
  3164. <option value="2">蓝色</option>
  3165. <option value="3">黄色</option>
  3166. <option value="4">紫色</option>
  3167. <option value="5">橙色</option>
  3168. </select></span>
  3169. <span><label for="medicint_info"> 输入使用的顺序(使用半角逗号分隔):</label></span>
  3170. <textarea class = "settingbox hide zdy-box" style = "display: inline-block;" id = 'medicint_info'>石楠叶,金银花,金银花,金银花,当归</textarea>
  3171. <div class = "item-commands" > <span class = "startDev" > 开始 </span><span class = "stopDev" > 停止 </span> </div>
  3172. </div>`,
  3173. }
  3174.  
  3175. //全局变量
  3176. var G = {
  3177. id: undefined,
  3178. state: undefined,
  3179. room_name: undefined,
  3180. family: undefined,
  3181. items: new Map(),
  3182. stat_boss_success: 0,
  3183. stat_boss_find: 0,
  3184. stat_xiyan_success: 0,
  3185. stat_xiyan_find: 0,
  3186. cds: new Map(),
  3187. in_fight: false,
  3188. auto_preform: false,
  3189. can_auto: false,
  3190. level: undefined,
  3191. getitemShow: undefined,
  3192. wk_listener: undefined,
  3193. };
  3194.  
  3195. //GlobalInit
  3196. var GI = {
  3197. init: function () {
  3198.  
  3199. WG.add_hook("items", function (data) {
  3200. Helper.saveRoomstate(data);
  3201.  
  3202. });
  3203.  
  3204. WG.add_hook(["login", "room", "items", "itemadd", "itemremove", "sc", "text", "state", "msg", "perform", "dispfm", "combat"], function (data) {
  3205. if (data.type == "login") {
  3206. G.id = data.id;
  3207. } else if (data.type == "room") {
  3208. let tmp = data.path.split("/");
  3209. G.map = tmp[0];
  3210. G.room = tmp[1];
  3211. if (G.map == 'home' || G.room == 'kuang')
  3212. G.can_auto = true;
  3213. else
  3214. G.can_auto = false;
  3215.  
  3216. G.room_name = data.name;
  3217. //强制结束pfm
  3218. if (G.in_fight) {
  3219. G.in_fight = false;
  3220. WG.auto_preform("stop");
  3221. }
  3222.  
  3223. } else if (data.type == "items") {
  3224. G.items = new Map();
  3225. for (var i = 0; i < data.items.length; i++) {
  3226. let item = data.items[i];
  3227. if (item.id) {
  3228. let n = $.trim($('<body>' + item.name + '</body>').text());
  3229. let i = n.lastIndexOf(' ');
  3230. let j = n.lastIndexOf('<');
  3231. let t = "";
  3232. let s = "";
  3233. if (j >= 0) {
  3234. s = n.substr(j + 1, 2);
  3235. }
  3236. if (i >= 0) {
  3237. t = n.substr(0, i);
  3238. n = n.substr(i + 1).replace(/<.*>/g, '');
  3239. }
  3240.  
  3241. G.items.set(item.id, {
  3242. name: n,
  3243. title: t,
  3244. state: s,
  3245. max_hp: item.max_hp,
  3246. max_mp: item.max_mp,
  3247. hp: item.hp,
  3248. mp: item.mp,
  3249. p: item.p,
  3250. damage: 0
  3251. });
  3252. }
  3253.  
  3254. }
  3255. } else if (data.type == "itemadd") {
  3256. if (data.id) {
  3257. let n = $.trim($('<body>' + data.name + '</body>').text());
  3258. let i = n.lastIndexOf(' ');
  3259. let j = n.lastIndexOf('<');
  3260. let t = "";
  3261. let s = "";
  3262. if (i >= 0) {
  3263. t = n.substr(0, i);
  3264. if (j >= 0) {
  3265. s = n.substr(j + 1, 2);
  3266. }
  3267. n = n.substr(i + 1).replace(/<.*>/g, '');
  3268. }
  3269. G.items.set(data.id, {
  3270. name: n,
  3271. title: t,
  3272. state: s,
  3273. max_hp: data.max_hp,
  3274. max_mp: data.max_mp,
  3275. hp: data.hp,
  3276. mp: data.mp,
  3277. p: data.p,
  3278. damage: 0
  3279. });
  3280. }
  3281. } else if (data.type == "itemremove") {
  3282. G.items.delete(data.id);
  3283. } else if (data.type == "sc") {
  3284. let item = G.items.get(data.id);
  3285. if (data.hp !== undefined) {
  3286. item.hp = data.hp;
  3287. if (data.id != G.id) {
  3288. G.scid = data.id; //伤害统计需要
  3289. }
  3290. // Helper.showallhp();
  3291. }
  3292. if (data.mp !== undefined) {
  3293. item.mp = data.mp;
  3294. }
  3295. } else if (data.type == "perform") {
  3296. G.skills = data.skills;
  3297. } else if (data.type == 'dispfm') {
  3298. if (data.id) {
  3299. if (data.distime) {}
  3300. G.cds.set(data.id, true);
  3301. var _id = data.id;
  3302. setTimeout(function () {
  3303. G.cds.set(_id, false);
  3304. //技能cd时间到
  3305. let pfmtimeTips = {data:JSON.stringify({type:"enapfm",id:_id})};
  3306. WG.receive_message(pfmtimeTips);
  3307. }, data.distime);
  3308. }
  3309. if (data.rtime) {
  3310. G.gcd = true;
  3311. setTimeout(function () {
  3312. G.gcd = false;
  3313. }, data.rtime);
  3314. } else {
  3315. G.gcd = false;
  3316. }
  3317. } else if (data.type == "combat") {
  3318. if (data.start) {
  3319. G.in_fight = true;
  3320. WG.auto_preform();
  3321. }
  3322. if (data.end) {
  3323. G.in_fight = false;
  3324. WG.auto_preform("stop");
  3325. }
  3326. }
  3327. });
  3328. WG.add_hook("state", function (data) {
  3329. console.dir(data);
  3330. });
  3331. WG.add_hook("dialog", function (data) {
  3332. //console.dir(data);
  3333. if (data.dialog == "pack" && data.items != undefined && data.items.length >= 0) {
  3334. //equip =
  3335. for (var i = 0; i < data.items.length; i++) {
  3336. if (data.items[i].name.indexOf("铁镐") >= 0) {
  3337. equip["铁镐"] = data.items[i].id;
  3338. //messageAppend("铁镐ID:" + data.items[i].id);
  3339. }
  3340. }
  3341. for (var j = 0; j < data.eqs.length; j++) {
  3342. if (data.eqs[j] != null && data.eqs[j].name.indexOf("铁镐") >= 0) {
  3343. equip["铁镐"] = data.eqs[j].id;
  3344. //messageAppend("铁镐ID:" + data.eqs[j].id);
  3345. }
  3346. }
  3347. } else if (data.dialog == 'pack' && data.desc != undefined) {
  3348. messageClear();
  3349. var itemname = data.desc.split("\n")[0];
  3350. var htmla = `<div class="item-commands ">
  3351. <span class = "copyid" data-clipboard-target = ".target1" > ` + itemname + ":" + data.id +
  3352. `复制到剪贴板 </span></div> `;
  3353. messageAppend(htmla);
  3354. $(".copyid").on('click', () => {
  3355. var copydata = data.id;
  3356. GM_setClipboard(copydata);
  3357. messageAppend("复制成功");
  3358. });
  3359. }
  3360. if (data.dialog == 'score') {
  3361. if (!G.level) {
  3362. G.level = data.level;
  3363. console.log("欢迎" + G.level);
  3364. }
  3365. }
  3366. });
  3367. WG.add_hook("msg", function (data) {
  3368. if (data.ch == "sys") {
  3369. var automarry = GM_getValue(role + "_automarry", automarry);
  3370. if (data.content.indexOf(",婚礼将在一分钟后开始。") >= 0) {
  3371. console.dir(data);
  3372. if (automarry == "已开启") {
  3373. if (stopauto) {
  3374. let b = "<div class=\"item-commands\"><span id = 'onekeyjh'>参加喜宴</span></div>"
  3375. messageClear();
  3376. messageAppend("<hiy>点击参加喜宴</hiy>");
  3377. messageAppend(b);
  3378. $('#onekeyjh').on('click', function () {
  3379. Helper.xiyan();
  3380. });
  3381. } else {
  3382. console.log("xiyan");
  3383. messageAppend("自动前往婚宴地点");
  3384. Helper.xiyan();
  3385. }
  3386. } else if (automarry == "已停止") {
  3387. let b = "<div class=\"item-commands\"><span id = 'onekeyjh'>参加喜宴</span></div>"
  3388. messageClear();
  3389. messageAppend("<hiy>点击参加喜宴</hiy>");
  3390. messageAppend(b);
  3391. $('#onekeyjh').on('click', function () {
  3392. Helper.xiyan();
  3393. });
  3394. }
  3395. }
  3396. }
  3397. if (data.ch == "rumor") {
  3398. if (data.content.indexOf("听说") >= 0 &&
  3399. data.content.indexOf("出现在") >= 0 &&
  3400. data.content.indexOf("一带。") >= 0) {
  3401. console.dir(data);
  3402. if (autoKsBoss == "已开启") {
  3403. if (stopauto) {
  3404. var c = "<div class=\"item-commands\"><span id = 'onekeyKsboss'>传送到boss</span></div>";
  3405. messageClear();
  3406. messageAppend("boss已出现");
  3407. messageAppend(c);
  3408. $('#onekeyKsboss').on('click', function () {
  3409. Helper.kksBoss(data);
  3410. });
  3411. } else {
  3412. Helper.kksBoss(data);
  3413. }
  3414. } else if (autoKsBoss == "已停止") {
  3415. var c = "<div class=\"item-commands\"><span id = 'onekeyKsboss'>传送到boss</span></div>";
  3416. messageClear();
  3417. messageAppend("boss已出现");
  3418. messageAppend(c);
  3419. $('#onekeyKsboss').on('click', function () {
  3420. Helper.kksBoss(data);
  3421. });
  3422. }
  3423. }
  3424. }
  3425. });
  3426. WG.add_hook('text', function (data) {
  3427. if (G.getitemShow) {
  3428. if (data.msg.indexOf("恭喜你得到") >= 0 ||
  3429. (data.msg.indexOf("获得") >= 0 &&
  3430. data.msg.indexOf("经验") == -1) ||
  3431. data.msg.indexOf("你找到") >= 0 ||
  3432. data.msg.indexOf("你从") >= 0 ||
  3433. data.msg.indexOf("得到") >= 0) {
  3434. messageAppend(data.msg);
  3435. }
  3436. }
  3437. });
  3438. },
  3439.  
  3440. };
  3441.  
  3442.  
  3443. $(document).ready(function () {
  3444.  
  3445. $('head').append('<link href="https://s1.pstatp.com/cdn/expire-1-y/jquery-contextmenu/2.6.3/jquery.contextMenu.min.css" rel="stylesheet">');
  3446. $('head').append('<link href="https://cdn.bootcss.com/layer/2.3/skin/layer.css" rel="stylesheet">');
  3447. $('body').append(UI.codeInput);
  3448. setTimeout(() => {
  3449. var server = document.createElement('script');
  3450. server.setAttribute('src', 'https://cdn.bootcss.com/layer/2.3/layer.js');
  3451. document.head.appendChild(server);
  3452. console.log("layer 加载完毕!");
  3453.  
  3454. }, 2000);
  3455. KEY.init();
  3456. WG.init();
  3457. GI.init();
  3458. unsafeWindow.WG = WG;
  3459. unsafeWindow.T = T;
  3460. unsafeWindow.L = L;
  3461. unsafeWindow.messageClear = messageClear;
  3462. unsafeWindow.messageAppend = messageAppend;
  3463. $.contextMenu({
  3464. selector: '.container',
  3465. items: {
  3466. "关闭自动": {
  3467. name: "关闭自动",
  3468. visible: function (key, opt) {
  3469. return timer != 0;
  3470. },
  3471. callback: function (key, opt) {
  3472. WG.timer_close();
  3473. },
  3474. },
  3475. "自动": {
  3476. name: "自动",
  3477. visible: function (key, opt) {
  3478. return timer == 0;
  3479. },
  3480. "items": {
  3481. "自动武道": {
  3482. name: "自动武道",
  3483. callback: function (key, opt) {
  3484. WG.wudao_auto();
  3485. },
  3486. },
  3487. "自动小树林": {
  3488. name: "自动小树林",
  3489. callback: function (key, opt) {
  3490. WG.grove_auto();
  3491. }
  3492. },
  3493. "自动整理并清包": {
  3494. name: "自动整理并清包",
  3495. callback: function (key, opt) {
  3496. WG.sell_all();
  3497. }
  3498. },
  3499. "自动比试": {
  3500. name: "自动比试",
  3501. visible: function (key, opt) {
  3502. return Helper.fight_listener == undefined;
  3503. },
  3504. callback: function (key, opt) {
  3505. Helper.auto_fight();
  3506. },
  3507. },
  3508. "关闭比试": {
  3509. name: "关闭比试",
  3510. visible: function (key, opt) {
  3511. return Helper.fight_listener != undefined;
  3512. },
  3513. callback: function (key, opt) {
  3514. Helper.auto_fight();
  3515. },
  3516. },
  3517. "自动使用道具": {
  3518. name: "自动使用道具",
  3519. callback: function (key, opt) {
  3520. Helper.auto_useitem();
  3521. },
  3522. },
  3523. "自动研药": {
  3524. name: "自动研药",
  3525. callback: function (key, opt) {
  3526. Helper.auto_Development_medicine();
  3527. },
  3528. },
  3529. "一键日常": {
  3530. name: "一键日常",
  3531. callback: function (key, opt) {
  3532. Helper.oneKeyDaily();
  3533. },
  3534. },
  3535. "一键扫荡": {
  3536. name: "一键扫荡",
  3537. callback: function (key, opt) {
  3538. Helper.oneKeySD();
  3539. },
  3540. },
  3541.  
  3542. },
  3543. },
  3544. "换装设置": {
  3545. name: "换装设置",
  3546. "items": {
  3547. "xx0": {
  3548. name: "套装1设定或装备",
  3549. callback: function (key, opt) {
  3550. Helper.eqhelper(1);
  3551. },
  3552. },
  3553. "xx1": {
  3554. name: "清除套装1设置",
  3555. callback: function (key, opt) {
  3556. Helper.eqhelperdel(1);
  3557. },
  3558. },
  3559. "yy0": {
  3560. name: "套装2设定或装备",
  3561. callback: function (key, opt) {
  3562. Helper.eqhelper(2);
  3563. },
  3564. },
  3565. "yy1": {
  3566. name: "清除套装2设置",
  3567. callback: function (key, opt) {
  3568. Helper.eqhelperdel(2);
  3569. },
  3570. },
  3571. "zz0": {
  3572. name: "套装3设定或装备",
  3573. callback: function (key, opt) {
  3574. Helper.eqhelper(3);
  3575. },
  3576. },
  3577. "zz1": {
  3578. name: "清除套装3设置",
  3579. callback: function (key, opt) {
  3580. Helper.eqhelperdel(3);
  3581. },
  3582. },
  3583. "uneq": {
  3584. name: "取消所有装备",
  3585. callback: function (key, opt) {
  3586. Helper.uneqall();
  3587. },
  3588. },
  3589. }
  3590. },
  3591. "自命令,及自定监控": {
  3592. name: "自命令,及自定监控",
  3593. callback: function (key, opt) {
  3594. Helper.zml();
  3595. },
  3596. },
  3597. "手动喜宴": {
  3598. name: "手动喜宴",
  3599. callback: function (key, opt) {
  3600. Helper.xiyan();
  3601. },
  3602. },
  3603. "快捷传送": {
  3604. name: "常用地点",
  3605. "items": {
  3606. "mp0": {
  3607. name: "豪宅",
  3608. callback: function (key, opt) {
  3609. WG.go("住房");
  3610. },
  3611. },
  3612. "mp11": {
  3613. name: "衙门",
  3614. callback: function (key, opt) {
  3615. WG.go("扬州城-衙门正厅");
  3616. },
  3617. },
  3618. "mp12": {
  3619. name: "镖局",
  3620. callback: function (key, opt) {
  3621. WG.go("扬州城-镖局正厅");
  3622. },
  3623. },
  3624. "mp1": {
  3625. name: "当铺",
  3626. callback: function (key, opt) {
  3627. WG.go("扬州城-当铺");
  3628. },
  3629. },
  3630. "mp2": {
  3631. name: "擂台",
  3632. callback: function (key, opt) {
  3633. WG.go("扬州城-擂台");
  3634. },
  3635. },
  3636. "mp3": {
  3637. name: "帮派",
  3638. callback: function (key, opt) {
  3639. WG.go("扬州城-帮派");
  3640. },
  3641. },
  3642. "mp4": {
  3643. name: "武道",
  3644. callback: function (key, opt) {
  3645. WG.go("武道塔");
  3646. },
  3647. },
  3648. "mp5": {
  3649. name: "矿山",
  3650. callback: function (key, opt) {
  3651. WG.go("扬州城-矿山");
  3652. },
  3653. },
  3654. "mp6": {
  3655. name: "药铺",
  3656. callback: function (key, opt) {
  3657. WG.go("扬州城-药铺");
  3658. },
  3659. },
  3660. "mp7": {
  3661. name: "武庙疗伤",
  3662. callback: function (key, opt) {
  3663. WG.go("扬州城-武庙");
  3664. WG.Send("liaoshang");
  3665. },
  3666. }
  3667. },
  3668. },
  3669. "门派传送": {
  3670. name: "门派传送",
  3671. "items": {
  3672. "mp0": {
  3673. name: "武当",
  3674. callback: function (key, opt) {
  3675. let myDate = new Date();
  3676. if (myDate.getHours() >= 17) {
  3677. WG.go("武当派-后山小院");
  3678. } else {
  3679. WG.go("武当派-广场");
  3680. }
  3681. },
  3682. },
  3683. "mp1": {
  3684. name: "少林",
  3685. callback: function (key, opt) {
  3686. let myDate = new Date();
  3687. if (myDate.getHours() >= 17) {
  3688. WG.go("少林派-方丈楼");
  3689. } else {
  3690. WG.go("少林派-广场");
  3691. }
  3692. },
  3693. },
  3694. "mp2": {
  3695. name: "华山",
  3696. callback: function (key, opt) {
  3697. let myDate = new Date();
  3698. if (myDate.getHours() >= 17) {
  3699. WG.go("华山派-客厅");
  3700. } else {
  3701. WG.go("华山派-镇岳宫");
  3702. }
  3703. },
  3704. },
  3705. "mp3": {
  3706. name: "峨嵋",
  3707. callback: function (key, opt) {
  3708. let myDate = new Date();
  3709. if (myDate.getHours() >= 17) {
  3710. WG.go("峨嵋派-清修洞");
  3711. } else {
  3712. WG.go("峨嵋派-金顶")
  3713. }
  3714. },
  3715. },
  3716. "mp4": {
  3717. name: "逍遥",
  3718. callback: function (key, opt) {
  3719. let myDate = new Date();
  3720. if (myDate.getHours() >= 17) {
  3721. WG.go("逍遥派-地下石室");
  3722. } else {
  3723. WG.go("逍遥派-青草坪");
  3724. }
  3725. },
  3726. },
  3727. "mp5": {
  3728. name: "丐帮",
  3729. callback: function (key, opt) {
  3730. let myDate = new Date();
  3731. if (myDate.getHours() >= 17) {
  3732. WG.go("丐帮-林间小屋");
  3733. } else {
  3734. WG.go("丐帮-树洞内部");
  3735. }
  3736. },
  3737. },
  3738. "mp6": {
  3739. name: "武馆",
  3740. callback: function (key, opt) {
  3741. WG.go("扬州城-扬州武馆");
  3742. },
  3743. }
  3744. },
  3745. },
  3746. "打开仓库": {
  3747. name: "打开仓库",
  3748. callback: function (key, opt) {
  3749. WG.go("仓库");
  3750. },
  3751. },
  3752. "更新ID": {
  3753. name: "更新ID",
  3754. callback: function (key, opt) {
  3755. WG.updete_goods_id();
  3756. WG.updete_npc_id();
  3757. },
  3758. },
  3759. "调试BOSS": {
  3760. name: "调试BOSS",
  3761. visible: false,
  3762. callback: function (key, opt) {
  3763. //WG.SendCmd('test $findPlayerByName("冬马")');
  3764. Helper.kksBoss({
  3765. content: "听说枯荣大师出现在扬州城-广场一带。"
  3766. });
  3767. },
  3768. },
  3769. "流程菜单Raid.js": {
  3770. name: "流程菜单Raid.js",
  3771. callback: function (key, opt) {
  3772. if (unsafeWindow.ToRaid) {
  3773. unsafeWindow.ToRaid.menu();
  3774. } else {
  3775. messageAppend("插件未安装,请访问 https://greasyfork.org/zh-CN/scripts/375851-wsmud-raid 下载并安装");
  3776. window.open("https://greasyfork.org/zh-CN/scripts/375851-wsmud-raid ", '_blank').location;
  3777. }
  3778. }
  3779. },
  3780. "设置": {
  3781. name: "设置",
  3782. callback: function (key, opt) {
  3783. WG.setting();
  3784. },
  3785. },
  3786. "打开面板": {
  3787. name: "打开面板",
  3788. visible: function (key, opt) {
  3789. return $('.WG_log').css('display') == 'none';
  3790. },
  3791. callback: function (key, opt) {
  3792. WG.showhideborad();
  3793. },
  3794. },
  3795. "关闭面板": {
  3796. name: "关闭面板",
  3797. visible: function (key, opt) {
  3798. return $('.WG_log').css('display') != 'none';
  3799. },
  3800. callback: function (key, opt) {
  3801. WG.showhideborad();
  3802. },
  3803. }
  3804. }
  3805. });
  3806. });
  3807. })();