您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
适用于 PC 端,利用了界面的无用区域,可以方便查看信息,然而目前并没有什么实用价值。
当前为
// ==UserScript== // @name wsmud_funny // @namespace suqing // @version 0.1.2 // @author suqing // @match http://game.wsmud.com/* // @match http://www.wsmud.com/* // @homepage https://gf.qytechs.cn/zh-CN/scripts/380709 // @description 适用于 PC 端,利用了界面的无用区域,可以方便查看信息,然而目前并没有什么实用价值。 // @run-at document-start // @require http://code.jquery.com/jquery-3.3.1.slim.min.js // @grant unsafeWindow // @grant GM_addStyle // @grant GM_setValue // @grant GM_deleteValue // @grant GM_getValue // @grant GM_setClipboard // ==/UserScript== (function() { 'use strict'; if (!WebSocket) console.log("(Error) 无法获取 window.WebSocket!"); var suqing = { name: GM_info.script.name, version: GM_info.script.version, webSocket: null, onmessage_fn: null, role: {}, skills: [], getData: function() { async function action() { // 模拟点击 获取数据 suqing.sendmessage("score"); // 属性 1 await sleep(200); suqing.sendmessage("score2"); // 属性 2 await sleep(200); $("[command=skills]").click(); // 点击技能 await sleep(200); $("[command=showcombat]").click(); // 点击动作 $("[command=showtool]").click(); // 点击菜单 $(".dialog-close").click(); }; action(); function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); }; }, refershRole: function() { for (const key in suqing.role) $(`.role_${key}`).html(suqing.role[key]); }, refershSKills: function() { suqing.skills.sort(function(a, b) { return a.level <= b.level; }); $(".skill").html(""); for (var skill of suqing.skills) { $(".skill").append(`<tr><td>${skill.name}</td><td>${skill.id}</td><td>${skill.level}</td></tr>`); } $(".skill").append(`<tr><td colspan="3">当前技能上限为<hic>${suqing.role["skill_limit"]}</hic>级</td></tr>`); }, onmessage: function(message) { var data = message.data; // 1. 刚刚登录(不可用) if (data.includes("重新连线。")) { suqing.getData(); // 2. 打坐检测内力 } else if (data.includes("你的最大内力增加了") && data.includes("点。")) { var n = parseInt(data.toString().replace(/[^0-9]/ig,"")), max = parseInt(suqing.role.max_mp), limit = parseInt(suqing.role.limit_mp); var time = (limit - max) / (n * 6); // X分钟 => X小时X分钟 var timeString = time < 60 ? `${parseInt(t)}分钟` : `${parseInt(time / 60)}小时${parseInt(time % 60)}分钟`; $(".role_dazuo_time").html(timeString); suqing.getData(); // 9. data: 字符串 => 对象 } else if ((data.includes("{") && data.includes("}")) || (data.includes("[") && data.includes("]"))) { data = new Function("return " + data + ";")(); // 9.1 type = state if (data.type === "state") { // 9.2 type = dialog } else if (data.type === "dialog") { // 9.2.1 dialog = score if (data.dialog === "score") { for (const key in data) suqing.role[key] = data[key]; suqing.refershRole(); // 9.2.2 dialog = skills } else if (data.dialog === "skills") { if (data.items) { // 所有技能数据 suqing.skills = data.items; suqing.role["skill_limit"] = data.limit; // data.limit 等级上限 suqing.refershSKills(); } else if (data.id) { // 单个技能变动 for (var skill of suqing.skills) { if (skill.id === data.id) { skill.level = data.level; suqing.refershSKills(); break; } } } // 9.2.3 dialog = pack } else if (data.dialog === "pack") { } } else if (data.type === "msg") { // 9.3 type = msg if (data.ch === "chat") { // 9.3.1 世界频道 var levels = ["<hic>闲聊</hic>", "<hic>闲聊</hic>", "<hic>闲聊</hic>", "<hiy>宗师</hiy>", "<hiz>武圣</hiz>", "<hio>武帝</hio>", "<hir>武神</hir>"]; $(".msg").append( $(`<span cmd="look3 ${data.uid}"></span>`).click(function() { suqing.sendmessage(`${$(this).attr("cmd")}`); }).html(`<hic>【${levels[data.lv]}】${data.name}:${data.content}</hic>`) ).append("<br>"); } else if (data.ch === "rumor") { // 9.3.2 谣言 $(".msg").append(`<him>【谣言】${data.content}</him><br>`); } else if (data.ch === "sys") { // 9.3.3 系统 $(".msg").append(`<hir>【系统】${data.content}</hir><br>`); } else if (data.ch === "tm") { // 9.3.4 队伍 $(".msg").append( $(`<span cmd="look3 ${data.uid}"></span>`).click(function() { suqing.sendmessage(`${$(this).attr("cmd")}`); }).html(`<hig>【队伍】${data.name}:${data.content}</hig>`) ).append("<br>"); } else if (data.ch === "es") { // 9.3.5 全区 $(".msg").append( $(`<span></span>`).html(`<hio>【${data.server}】${data.name}:${data.content}</hio>`) ).append("<br>"); } else if (data.ch === "fam") { // 9.3.6 门派 $(".msg").append( $(`<span cmd="look3 ${data.uid}"></span>`).click(function() { suqing.sendmessage(`${$(this).attr("cmd")}`); }).html(`<hiy>【${data.fam}】${data.name}:${data.content}</hiy>`) ).append("<br>"); } else if (data.ch === "pty") { // 9.3.7 帮派 $(".msg").append( $(`<span cmd="look3 ${data.uid}"></span>`).click(function() { suqing.sendmessage(`${$(this).attr("cmd")}`); }).html(`<hiz>【帮派】${data.name}:${data.content}</hiz>`) ).append("<br>"); } $(".channel").hide(); fn(); // 滚动效果 return; function fn() { var a = $(".msg")[0].scrollTop, b = $(".msg")[0].scrollHeight, h = $(".msg").height(); if (a < b - h) { $(".msg")[0].scrollTop = a + 1; setTimeout(fn, 1000/60); } }; } } // 0. console console.log(data); suqing.onmessage_fn.apply(this, arguments); }, sendmessage: function(message) { console.log("Sending Message: ", message); if ($("#sendmessage").attr("cmd")) { $("#sendmessage").attr("cmd", message); } else { $(".container").append($(`<span id="sendmessage" cmd="${message}"><span>`)); } $("#sendmessage").click(); }, }; unsafeWindow.addEventListener("resize", function() { console.log("(Event) window.onresize"); suqing.h_msg = undefined; $(".msg").html(""); suqing.h_console = undefined; $(".console").html(""); }); unsafeWindow.WebSocket = function(url) { suqing.webSocket = new WebSocket(url); } unsafeWindow.WebSocket.prototype = { get url() { return suqing.webSocket.url; }, get protocol() { return suqing.webSocket.protocol; }, get readyState() { return suqing.webSocket.readyState; }, get bufferedAmount() { return suqing.webSocket.bufferedAmount; }, get extensions() { return suqing.webSocket.extensions; }, get binaryType() { return suqing.webSocket.binaryType; }, set binaryType(type) { suqing.webSocket.binaryType = type; }, get onopen() { return suqing.webSocket.onopen; }, set onopen(fn) { suqing.webSocket.onopen = fn; }, get onclose() { return suqing.webSocket.onclose; }, set onclose(fn) { suqing.webSocket.onclose = fn; }, get onerror() { return suqing.webSocket.onerror; }, set onerror(fn) { suqing.webSocket.onerror = fn; }, close: function () { suqing.webSocket.close(); }, get onmessage() { return suqing.webSocket.onmessage; }, // 截获接收到的数据 set onmessage(fn) { suqing.onmessage_fn = fn; suqing.webSocket.onmessage = suqing.onmessage; }, // 截获发送出的数据 send: function (message) { suqing.webSocket.send(message); $(".console").append($(`<div><hig> >> ${message}</hig></div>`)); fn(); // 滚动效果 function fn() { var a = $(".console")[0].scrollTop; var b = $(".console")[0].scrollHeight; if (suqing.h_console === undefined) suqing.h_console = b - a; if (a < b - suqing.h_console) { $(".console")[0].scrollTop = a + 1; setTimeout(fn, 1000/60); } }; }, }; $(document).ready(function() { addDiv(); addStyle(); }); function addDiv() { $("body").append($(`<div class="left"></div>`)); $("body").append($(`<div class="msg"></div>`)); $("body").append($(`<div class="right"></div>`)); $("body").append($(`<div class="extra"></div>`)); $(".left").append(` <table class="role"> <tr><td colspan="4">角色信息</td></tr> <tr><td colspan="4" class="role_name">ROLE NAME</td></tr> <tr><td>ID</td><td colspan="3" class="role_id"></td></tr> <tr><td>性别</td><td class="role_gender"></td><td>境界</td><td class="role_level"></td></tr> <tr><td>年龄</td><td colspan="3" class="role_age"></td></tr> <tr><td>经验</td><td colspan="3"><hig class="role_exp"></hig></td></tr> <tr><td>潜能</td><td colspan="3"><hig class="role_pot"></hig></td></tr> <tr><td>气血</td><td colspan="3"><span class="role_hp"></span>/<span class="role_max_hp"></span></td></tr> <tr><td>内力</td><td colspan="3"><span class="role_mp"></span>/<span class="role_max_mp"></span></td></tr> <tr><td>内力上限</td><td colspan="3"><hic class="role_limit_mp"></hic></td></tr> <tr><td>打坐计算</td><td colspan="3"><hir class="role_dazuo_time"></hir></td></tr> <tr><td>臂力</td><td><hiy class="role_str"></hiy>+<span class="role_str_add"></span></td><td>根骨</td><td><hiy class="role_con"></hiy>+<span class="role_con_add"></span></td></tr> <tr><td>身法</td><td><hiy class="role_dex"></hiy>+<span class="role_dex_add"></span></td><td>悟性</td><td><hiy class="role_int"></hiy>+<span class="role_int_add"></span></td></tr> <tr><td>攻击</td><td class="role_gj"></td><td>终伤</td><td class="role_add_sh"></td></tr> <tr><td>防御</td><td class="role_fy"></td><td>命中</td><td class="role_mz"></td></tr> <tr><td>招架</td><td class="role_zj"></td><td>躲闪</td><td class="role_ds"></td></tr> <tr><td>暴击</td><td class="role_bj"></td><td>攻速</td><td class="role_gjsd"></td></tr> <tr><td>门派</td><td class="role_family"></td><td>功绩</td><td><hig class="role_gongji"></hig></td></tr> <tr><td>忽视防御</td><td class="role_diff_fy"></td><td>伤害减免</td><td class="role_diff_sh"></td></tr> <tr><td>暴击伤害</td><td class="role_add_bj"></td><td>暴击抵抗</td><td class="role_diff_bj"></td></tr> <tr><td>增加忙乱</td><td class="role_busy"></td><td>忽视忙乱</td><td class="role_diff_busy"></td></tr> <tr><td>释放速度</td><td class="role_releasetime"></td><td>冷却速度</td><td class="role_distime"></td></tr> <tr><td>打坐效率</td><td class="role_dazuo_per"></td><td>内力减耗</td><td class="role_expend_mp"></td></tr> <tr><td>练习效率</td><td class="role_lianxi_per"></td><td>学习效率</td><td class="role_study_per"></td></tr> </table> <div class="msg_title"><hiy>指令记录</hiy></div> <div class="console"></div> <div class="send"><input type="text" autocomplete="off" id="send_value"><button type="button" id="send_btn">发送</button></div> `); $("#send_btn").click(function() { // 发送按钮 var value = $("#send_value").val(); suqing.sendmessage(value); $("#send_value").val(""); }); $("#send_value").keypress(function(key) { // 监控回车 if (key.which == 13) $("#send_btn").click(); }); $(".right").append(` <table class="skill_title"> <tr><td colspan="3">技能列表</td></tr> <tr> <td>技能</td> <td>代码</td> <td>等级</td> <tr> </table> <div class="skill_box"><table class="skill"> <tbody></tbody> </table></div> `); } function addStyle() { GM_addStyle(` body { display: flex; flex-flow: row no-wrap; width: 100vw; } .signinfo { display: none; } .login-content, .container { flex: 0 0 28rem; border: 0.05em solid #008000; } .container { width: 28rem; -webkit-user-select: none; -moz-user-select: none; -ms-user-select": none; } .left { order: 1; flex: 0 0 20rem; display: flex; flex-direction: column; } .msg { order: -1; flex: 0 0 20rem; font-size: 0.8rem; overflow: scroll; } .right { order: 2; flex: 0 0 20rem; display: flex; flex-direction: column; } .extra { order: 100; flex: 0 1 100rem; } .left table { border-collapse: collapse; table-layout: fixed; width: 20.05rem; } .left td { border: #008000 solid 0.05rem; text-align: center; overflow: hidden; white-space: nowrap; } /* ROLE */ .role { flex: 0 0 auto; } .role tr td:first-child, .role tr td:first-child+td+td { width: 3.95rem; } .role tr td:first-child+td, .role tr td:first-child+td+td+td { width: 5.95rem; } /* MESSAGE */ .msg_title { flex: 0 0 auto; text-align: center; border: #008000 solid 0.05rem; } .console { flex: 0 1 100rem; width: 20rem; overflow: scroll; white-space: nowrap; border-left: #008000 solid 0.05rem; } .send { flex: 0 0 auto; display: flex; height: 2rem; } .send input { flex: 1 0 auto; } .send button { height: auto; } /* SKILL */ .right .skill_title { flex: 0 0 auto; } .right .skill_box { flex: 1 1 auto; overflow: scroll; } .right table { border-collapse: collapse; table-layout: fixed; width: 20rem; } .right td { border: #008000 solid 0.05rem; text-align: center; overflow: hidden; white-space: nowrap; } .skill tr td:first-child, .skill_title tr td:first-child { width: 6rem; } .skill tr td:first-child+td, skill_title tr td:first-child+td { width: 8rem; } .skill tr td:first-child+td+td, skill_title tr td:first-child+td+td { width: 4rem; } `); } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址