// ==UserScript==
// @name wsmud_pluginss
// @namespace cqv1
// @version 0.0.23.4
// @date 01/07/2018
// @modified 27/08/2018
// @homepage https://greasyfork.org/zh-CN/scripts/371372
// @description 武神传说 MUD
// @author fjcqv(源程序) & zhzhwcn(提供websocket监听)& knva(做了一些微小的贡献)
// @match http://game.wsmud.com/*
// @run-at document-start
// @require https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js
// @require https://cdn.bootcss.com/jquery-contextmenu/3.0.0-beta.2/jquery.contextMenu.min.js
// @grant unsafeWindow
// @grant GM_addStyle
// @grant GM_getValue
// @grant GM_setValue
// @downloadURL none
// ==/UserScript==
// 2018年9月3日11:58:04 修复尸体显血
(function () {
'use strict';
Array.prototype.baoremove = function (dx) {
if (isNaN(dx) || dx > this.length) {
return false;
}
this.splice(dx, 1);
}
if (WebSocket) {
console.log('插件可正常运行,Plugins can run normally');
var _ws = WebSocket,
ws, ws_on_message;
unsafeWindow.WebSocket = function (uri) {
ws = new _ws(uri);
};
unsafeWindow.WebSocket.prototype = {
CONNECTING: _ws.CONNECTING,
OPEN: _ws.OPEN,
CLOSING: _ws.CLOSING,
CLOSED: _ws.CLOSED,
get url() {
return ws.url;
},
get protocol() {
return ws.protocol;
},
get readyState() {
return ws.readyState;
},
get bufferedAmount() {
return ws.bufferedAmount;
},
get extensions() {
return ws.extensions;
},
get binaryType() {
return ws.binaryType;
},
set binaryType(t) {
ws.binaryType = t;
},
get onopen() {
return ws.onopen;
},
set onopen(fn) {
ws.onopen = fn;
},
get onmessage() {
return ws.onmessage;
},
set onmessage(fn) {
ws_on_message = fn;
ws.onmessage = WG.receive_message;
},
get onclose() {
return ws.onclose;
},
set onclose(fn) {
ws.onclose = fn;
},
get onerror() {
return ws.onerror;
},
set onerror(fn) {
ws.onerror = fn;
},
send: function (text) {
ws.send(text);
},
close: function () {
ws.close();
}
};
} else {
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");
}
var roomItemSelectIndex = -1;
var timer = 0;
var cnt = 0;
var zb_npc;
var zb_place;
var next = 0;
var roomData = [];
var needfind = {
"武当派-林间小径": ["go south"],
"峨眉派-走廊": ["go north", "go south;go south", "go north;go east;go east"],
"丐帮-暗道": ["go east", "go east;go east", "go east"],
"逍遥派-林间小道": ["go west;go north", "go south;go south", "go north;go west"],
"少林派-竹林": ["go north"],
"逍遥派-地下石室": ["go up"],
"逍遥派-木屋": ["go south;go south;go south;go south"]
};
var goods = {
//扬州城-醉仙楼-店小二
"米饭": {
"id": null,
"sales": "店小二",
place: "扬州城-醉仙楼"
},
"包子": {
"id": null,
"sales": "店小二",
place: "扬州城-醉仙楼"
},
"鸡腿": {
"id": null,
"sales": "店小二",
place: "扬州城-醉仙楼"
},
"面条": {
"id": null,
"sales": "店小二",
place: "扬州城-醉仙楼"
},
"扬州炒饭": {
"id": null,
"sales": "店小二",
place: "扬州城-醉仙楼"
},
"米酒": {
"id": null,
"sales": "店小二",
place: "扬州城-醉仙楼"
},
"花雕酒": {
"id": null,
"sales": "店小二",
place: "扬州城-醉仙楼"
},
"女儿红": {
"id": null,
"sales": "店小二",
place: "扬州城-醉仙楼"
},
"醉仙酿": {
"id": null,
"sales": "店小二",
place: "扬州城-醉仙楼"
},
"神仙醉": {
"id": null,
"sales": "店小二",
place: "扬州城-醉仙楼"
},
//扬州城-杂货铺
"布衣": {
"id": null,
"sales": "杂货铺老板 杨永福",
place: "扬州城-杂货铺"
},
"钢刀": {
"id": null,
"sales": "杂货铺老板 杨永福",
place: "扬州城-杂货铺"
},
"木棍": {
"id": null,
"sales": "杂货铺老板 杨永福",
place: "扬州城-杂货铺"
},
"英雄巾": {
"id": null,
"sales": "杂货铺老板 杨永福",
place: "扬州城-杂货铺"
},
"布鞋": {
"id": null,
"sales": "杂货铺老板 杨永福",
place: "扬州城-杂货铺"
},
"铁戒指": {
"id": null,
"sales": "杂货铺老板 杨永福",
place: "扬州城-杂货铺"
},
"簪子": {
"id": null,
"sales": "杂货铺老板 杨永福",
place: "扬州城-杂货铺"
},
"长鞭": {
"id": null,
"sales": "杂货铺老板 杨永福",
place: "扬州城-杂货铺"
},
"钓鱼竿": {
"id": null,
"sales": "杂货铺老板 杨永福",
place: "扬州城-杂货铺"
},
"鱼饵": {
"id": null,
"sales": "杂货铺老板 杨永福",
place: "扬州城-杂货铺"
},
//扬州城-打铁铺
"铁剑": {
"id": null,
"sales": "铁匠铺老板 铁匠",
place: "扬州城-打铁铺"
},
"钢刀": {
"id": null,
"sales": "铁匠铺老板 铁匠",
place: "扬州城-打铁铺"
},
"铁棍": {
"id": null,
"sales": "铁匠铺老板 铁匠",
place: "扬州城-打铁铺"
},
"铁杖": {
"id": null,
"sales": "铁匠铺老板 铁匠",
place: "扬州城-打铁铺"
},
"铁镐": {
"id": null,
"sales": "铁匠铺老板 铁匠",
place: "扬州城-打铁铺"
},
//扬州城-药铺
"金创药": {
"id": null,
"sales": "药铺老板 平一指",
place: "扬州城-药铺"
},
"引气丹": {
"id": null,
"sales": "药铺老板 平一指",
place: "扬州城-药铺"
},
"养精丹": {
"id": null,
"sales": "药铺老板 平一指",
place: "扬州城-药铺"
},
};
var equip = {
"铁镐": 0,
};
var npcs = {
"店小二": 0
};
var place = {
"住房": "jh fam 0 start;go west;go west;go north;go enter",
"仓库": "jh fam 0 start;go north;go west;store",
"扬州城-醉仙楼": "jh fam 0 start;go north;go north;go east",
"扬州城-杂货铺": "jh fam 0 start;go east;go south",
"扬州城-打铁铺": "jh fam 0 start;go east;go east;go south",
"扬州城-药铺": "jh fam 0 start;go east;go east;go north",
"扬州城-衙门正厅": "jh fam 0 start;go west;go north;go north",
"扬州城-矿山": "jh fam 0 start;go west;go west;go west;go west",
"扬州城-喜宴": "jh fam 0 start;go north;go north;go east;go up",
"扬州城-擂台": "jh fam 0 start;go west;go south",
"扬州城-当铺": "jh fam 0 start;go south;go east",
"扬州城-帮派": "jh fam 0 start;go south;go south;go east",
"武当派-广场": "jh fam 1 start;",
"武当派-三清殿": "jh fam 1 start;go north",
"武当派-石阶": "jh fam 1 start;go west",
"武当派-练功房": "jh fam 1 start;go west;go west",
"武当派-太子岩": "jh fam 1 start;go west;go northup",
"武当派-桃园小路": "jh fam 1 start;go west;go northup;go north",
"武当派-舍身崖": "jh fam 1 start;go west;go northup;go north;go east",
"武当派-南岩峰": "jh fam 1 start;go west;go northup;go north;go west",
"武当派-乌鸦岭": "jh fam 1 start;go west;go northup;go north;go west;go northup",
"武当派-五老峰": "jh fam 1 start;go west;go northup;go north;go west;go northup;go northup",
"武当派-虎头岩": "jh fam 1 start;go west;go northup;go north;go west;go northup;go northup;go northup",
"武当派-朝天宫": "jh fam 1 start;go west;go northup;go north;go west;go northup;go northup;go northup;go north",
"武当派-三天门": "jh fam 1 start;go west;go northup;go north;go west;go northup;go northup;go northup;go north;go north",
"武当派-紫金城": "jh fam 1 start;go west;go northup;go north;go west;go northup;go northup;go northup;go north;go north;go north",
"武当派-林间小径": "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",
"武当派-后山小院": "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",
"少林派-广场": "jh fam 2 start;",
"少林派-山门殿": "jh fam 2 start;go north",
"少林派-东侧殿": "jh fam 2 start;go north;go east",
"少林派-西侧殿": "jh fam 2 start;go north;go west",
"少林派-天王殿": "jh fam 2 start;go north;go north",
"少林派-大雄宝殿": "jh fam 2 start;go north;go north;go northup",
"少林派-钟楼": "jh fam 2 start;go north;go north;go northeast",
"少林派-鼓楼": "jh fam 2 start;go north;go north;go northwest",
"少林派-后殿": "jh fam 2 start;go north;go north;go northwest;go northeast",
"少林派-练武场": "jh fam 2 start;go north;go north;go northwest;go northeast;go north",
"少林派-罗汉堂": "jh fam 2 start;go north;go north;go northwest;go northeast;go north;go east",
"少林派-般若堂": "jh fam 2 start;go north;go north;go northwest;go northeast;go north;go west",
"少林派-方丈楼": "jh fam 2 start;go north;go north;go northwest;go northeast;go north;go north",
"少林派-戒律院": "jh fam 2 start;go north;go north;go northwest;go northeast;go north;go north;go east",
"少林派-达摩院": "jh fam 2 start;go north;go north;go northwest;go northeast;go north;go north;go west",
"少林派-竹林": "jh fam 2 start;go north;go north;go northwest;go northeast;go north;go north;go north;go north",
"少林派-藏经阁": "jh fam 2 start;go north;go north;go northwest;go northeast;go north;go north;go north;go west",
"少林派-达摩洞": "jh fam 2 start;go north;go north;go northwest;go northeast;go north;go north;go north;go north;go north",
"华山派-镇岳宫": "jh fam 3 start;",
"华山派-苍龙岭": "jh fam 3 start;go eastup",
"华山派-舍身崖": "jh fam 3 start;go eastup;go southup",
"华山派-峭壁": "jh fam 3 start;go eastup;go southup;jumpdown",
"华山派-山谷": "jh fam 3 start;go eastup;go southup;jumpdown;go southup",
"华山派-山间平地": "jh fam 3 start;go eastup;go southup;jumpdown;go southup;go south",
"华山派-林间小屋": "jh fam 3 start;go eastup;go southup;jumpdown;go southup;go south;go east",
"华山派-玉女峰": "jh fam 3 start;go westup",
"华山派-玉女祠": "jh fam 3 start;go westup;go west",
"华山派-练武场": "jh fam 3 start;go westup;go north",
"华山派-练功房": "jh fam 3 start;go westup;go north;go east",
"华山派-客厅": "jh fam 3 start;go westup;go north;go north",
"华山派-偏厅": "jh fam 3 start;go westup;go north;go north;go east",
"华山派-寝室": "jh fam 3 start;go westup;go north;go north;go north",
"华山派-玉女峰山路": "jh fam 3 start;go westup;go south",
"华山派-玉女峰小径": "jh fam 3 start;go westup;go south;go southup",
"华山派-思过崖": "jh fam 3 start;go westup;go south;go southup;go southup",
"华山派-山洞": "jh fam 3 start;go westup;go south;go southup;go southup;break bi;go enter",
"华山派-长空栈道": "jh fam 3 start;go westup;go south;go southup;go southup;break bi;go enter;go westup",
"华山派-落雁峰": "jh fam 3 start;go westup;go south;go southup;go southup;break bi;go enter;go westup;go westup",
"峨眉派-金顶": "jh fam 4 start",
"峨眉派-庙门": "jh fam 4 start;go west",
"峨眉派-广场": "jh fam 4 start;go west;go south",
"峨眉派-走廊": "jh fam 4 start;go west;go south;go west",
"峨眉派-休息室": "jh fam 4 start;go west;go south;go east;go south",
"峨眉派-厨房": "jh fam 4 start;go west;go south;go east;go east",
"峨眉派-练功房": "jh fam 4 start;go west;go south;go west;go west",
"峨眉派-小屋": "jh fam 4 start;go west;go south;go west;go north;go north",
"峨眉派-清修洞": "jh fam 4 start;go west;go south;go west;go south;go south",
"峨眉派-大殿": "jh fam 4 start;go west;go south;go south",
"峨眉派-睹光台": "jh fam 4 start;go northup",
"峨眉派-华藏庵": "jh fam 4 start;go northup;go east",
"逍遥派-青草坪": "jh fam 5 start",
"逍遥派-林间小道": "jh fam 5 start;go east",
"逍遥派-练功房": "jh fam 5 start;go east;go north",
"逍遥派-木板路": "jh fam 5 start;go east;go south",
"逍遥派-工匠屋": "jh fam 5 start;go east;go south;go south",
"逍遥派-休息室": "jh fam 5 start;go west;go south",
"逍遥派-木屋": "jh fam 5 start;go north;go north",
"逍遥派-地下石室": "jh fam 5 start;go down;go down",
"丐帮-树洞内部": "jh fam 6 start",
"丐帮-树洞下": "jh fam 6 start;go down",
"丐帮-暗道": "jh fam 6 start;go down;go east",
"丐帮-破庙密室": "jh fam 6 start;go down;go east;go east;go east",
"丐帮-土地庙": "jh fam 6 start;go down;go east;go east;go east;go up",
"丐帮-林间小屋": "jh fam 6 start;go down;go east;go east;go east;go east;go east;go up",
"襄阳城-广场": "jh fam 7 start",
"武道塔": "jh fam 8 start"
};
var role;
var family = null;
var wudao_pfm = "1";
var ks_pfm = "2000";
var automarry = null;
var autoKsBoss = null;
var showHP = null;
var eqlist = {
1: [],
2: [],
3: []
};
var autoeq = 999;
//快捷键功能
var KEY = {
keys: [],
roomItemSelectIndex: -1,
init: function () {
//添加快捷键说明
$("span[command=stopstate] span:eq(0)").html("S");
$("span[command=showcombat] span:eq(0)").html("A");
$("span[command=showtool] span:eq(0)").html("C");
$("span[command=pack] span:eq(0)").html("B");
$("span[command=tasks] span:eq(0)").html("L");
$("span[command=score] span:eq(0)").html("O");
$("span[command=jh] span:eq(0)").html("J");
$("span[command=skills] span:eq(0)").html("K");
$("span[command=message] span:eq(0)").html("U");
$("span[command=shop] span:eq(0)").html("P");
$("span[command=stats] span:eq(0)").html("I");
$("span[command=setting] span:eq(0)").html(",");
$(document).on("keydown", this.e);
this.add(27, function () {
KEY.dialog_close();
});
this.add(192, function () {
$(".map-icon").click();
});
this.add(32, function () {
KEY.dialog_confirm();
});
this.add(83, function () {
KEY.do_command("stopstate");
});
this.add(13, function () {
KEY.do_command("showchat");
});
this.add(65, function () {
KEY.do_command("showcombat");
});
this.add(67, function () {
KEY.do_command("showtool");
});
this.add(66, function () {
KEY.do_command("pack");
});
this.add(76, function () {
KEY.do_command("tasks");
});
this.add(79, function () {
KEY.do_command("score");
});
this.add(74, function () {
KEY.do_command("jh");
});
this.add(75, function () {
KEY.do_command("skills");
});
this.add(73, function () {
KEY.do_command("stats");
});
this.add(85, function () {
KEY.do_command("message");
});
this.add(80, function () {
KEY.do_command("shop");
});
this.add(188, function () {
KEY.do_command("setting");
});
this.add(81, function () {
WG.sm_button();
});
this.add(87, function () {
WG.go_yamen_task();
});
this.add(69, function () {
WG.kill_all();
});
this.add(82, function () {
WG.get_all();
});
this.add(84, function () {
WG.sell_all();
});
this.add(89, function () {
WG.zdwk();
});
this.add(9, function () {
KEY.onRoomItemSelect();
return false;
});
//方向
this.add(102, function () {
WG.Send("go east");
KEY.onChangeRoom();
});
this.add(39, function () {
WG.Send("go east");
KEY.onChangeRoom();
});
this.add(100, function () {
WG.Send("go west");
KEY.onChangeRoom();
});
this.add(37, function () {
WG.Send("go west");
KEY.onChangeRoom();
});
this.add(98, function () {
WG.Send("go south");
KEY.onChangeRoom();
});
this.add(40, function () {
WG.Send("go south");
KEY.onChangeRoom();
});
this.add(104, function () {
WG.Send("go go north");
KEY.onChangeRoom();
});
this.add(38, function () {
WG.Send("go north");
KEY.onChangeRoom();
});
this.add(99, function () {
WG.Send("go southeast");
KEY.onChangeRoom();
});
this.add(97, function () {
WG.Send("go southwest");
KEY.onChangeRoom();
});
this.add(105, function () {
WG.Send("go northeast");
KEY.onChangeRoom();
});
this.add(103, function () {
WG.Send("go northwest");
KEY.onChangeRoom();
});
this.add(49, function () {
KEY.combat_commands(0);
});
this.add(50, function () {
KEY.combat_commands(1);
});
this.add(51, function () {
KEY.combat_commands(2);
});
this.add(52, function () {
KEY.combat_commands(3);
});
this.add(53, function () {
KEY.combat_commands(4);
});
this.add(54, function () {
KEY.combat_commands(5);
});
//alt
this.add(49 + 512, function () {
KEY.onRoomItemAction(0);
});
this.add(50 + 512, function () {
KEY.onRoomItemAction(1);
});
this.add(51 + 512, function () {
KEY.onRoomItemAction(2);
});
this.add(52 + 512, function () {
KEY.onRoomItemAction(3);
});
this.add(53 + 512, function () {
KEY.onRoomItemAction(4);
});
this.add(54 + 512, function () {
KEY.onRoomItemAction(5);
});
//ctrl
this.add(49 + 1024, function () {
KEY.room_commands(0);
});
this.add(50 + 1024, function () {
KEY.room_commands(1);
});
this.add(51 + 1024, function () {
KEY.room_commands(2);
});
this.add(52 + 1024, function () {
KEY.room_commands(3);
});
this.add(53 + 1024, function () {
KEY.room_commands(4);
});
this.add(54 + 1024, function () {
KEY.room_commands(5);
});
},
add: function (k, c) {
var tmp = {
key: k,
callback: c,
};
this.keys.push(tmp);
},
e: function (event) {
if ($(".channel-box").is(":visible")) {
KEY.chatModeKeyEvent(event);
return;
}
if ($(".dialog-confirm").is(":visible") &&
((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105)))
return;
var kk = (event.ctrlKey || event.metaKey ? 1024 : 0) + (event.altKey ? 512 : 0) + event.keyCode;
for (var k of KEY.keys) {
if (k.key == kk)
return k.callback();
}
},
dialog_close: function () {
$(".dialog-close").click();
},
dialog_confirm: function () {
$(".dialog-btn.btn-ok").click();
},
do_command: function (name) {
$("span[command=" + name + "]").click();
},
room_commands: function (index) {
$("div.combat-panel div.room-commands span:eq(" + index + ")").click();
},
combat_commands: function (index) {
$("div.combat-panel div.combat-commands span.pfm-item:eq(" + index + ")").click();
},
chatModeKeyEvent: function (event) {
if (event.keyCode == 27) {
KEY.dialog_close();
} else if (event.keyCode == 13) {
if ($(".sender-box").val().length) $(".sender-btn").click();
else KEY.dialog_close();
}
},
onChangeRoom: function () {
KEY.roomItemSelectIndex = -1;
},
onRoomItemSelect: function () {
if (KEY.roomItemSelectIndex != -1) {
$(".room_items div.room-item:eq(" + KEY.roomItemSelectIndex + ")").css("background", "#000");
}
KEY.roomItemSelectIndex = (KEY.roomItemSelectIndex + 1) % $(".room_items div.room-item").length;
var curItem = $(".room_items div.room-item:eq(" + KEY.roomItemSelectIndex + ")");
curItem.css("background", "#444");
curItem.click();
},
onRoomItemAction: function (index) {
//NPC下方按键
$(".room_items .item-commands span:eq(" + index + ")").click();
},
}
function messageClear() {
$(".WG_log pre").html("");
}
var log_line = 0;
function messageAppend(m, t = 0) {
100 < log_line && (log_line = 0, $(".WG_log pre").empty());
var ap = m + "\n";
if (t == 1) {
ap = "