您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
makes chat great
// ==UserScript== // @name chatft // @description makes chat great // @author foxie // @match https://epicmafia.com/lobby // @match https://epicmafia.com/game/* // @version 0.0.1.20170703170532 // @namespace https://greasyfork.org/users/4723 // ==/UserScript== const VALID_IMG=".bmp.gif.jpeg.jpg.png.svg.tiff"; const EM_OATS={ angel: "http://i.imgur.com/vmBnXfBh.png", arrgh: "http://i.imgur.com/yWRnfdWh.png", bird: "http://i.imgur.com/q99FCfN.gif", blush: "http://i.imgur.com/vUyEPUPh.png", buffufu: "http://i.imgur.com/VHsQvSlh.png", bulbasaur: "/uploads/emotes/1771_original.gif", charlotte: "http://i.imgur.com/i3hauTe.gif", chefufu: "http://i.imgur.com/nl1GQIkh.png", chill: "http://i.imgur.com/aI5U9aY.gif", coffufu: "http://i.imgur.com/5VRMdrqh.png", cryfox: "/uploads/emotes/18407_original.gif", cryfu: "http://i.imgur.com/fhR3Gulh.png", cthfulfu: "http://i.imgur.com/6ueysCDh.png", dalek: "http://i.imgur.com/W325y1s.gif", dikdik: "http://i.imgur.com/Dj8FRrp.png", ditto: "http://i.imgur.com/LwwqEU2.gif", eful: "http://i.imgur.com/WGExCALh.png", feels: "http://i.imgur.com/1UqALYB.gif", flufu: "http://i.imgur.com/EA3HECZh.png", fufixit: "http://i.imgur.com/SKUyzs1h.png", fuflex: "http://i.imgur.com/YDwbjQVh.png", fuflower: "http://i.imgur.com/I4zw3iMh.png", fufool: "http://i.imgur.com/e0uk1ddh.png", fufruit: "http://i.imgur.com/6yBMrqAh.png", fufu: "http://i.imgur.com/cmsntv2h.png", fufuf: "http://i.imgur.com/4h8NEEKh.png", fufull: "http://i.imgur.com/1CYf6dz.png", fufunky: "http://i.imgur.com/7aNzKPjh.png", fufuroll: "http://i.imgur.com/R2Ll0jL.gif", fufuu: "http://i.imgur.com/qXk1mb0h.png", fufuzela: "http://i.imgur.com/fyH1ZBoh.png", fuuf: "http://i.imgur.com/vp9LsSbh.png", gaws: "http://i.imgur.com/NIennRF.gif", gay: "http://i.imgur.com/ILvlbCc.gif", glad: "http://i.imgur.com/rbeyeW8h.png", gorf: "http://i.imgur.com/PkMTk1g.gif", hamtaro: "http://i.imgur.com/ZE2xLAL.gif", isay: "http://i.imgur.com/2GpbA1G.gif", kappa: "http://i.imgur.com/FyOZi55.gif", knifufu: "http://i.imgur.com/905e8hI.gif", kungfufu: "http://i.imgur.com/aMyCgYZh.png", leafufu: "http://i.imgur.com/8kRR9Dgh.png", lick: "http://i.imgur.com/9cmjMER.gif", licky: "http://i.imgur.com/PF9fOmc.gif", lub: "http://i.imgur.com/hCsYezmh.png", michael: "http://i.imgur.com/o5pnGish.png", nerdfufu: "http://i.imgur.com/Fk0YGAXh.png", mudkip: "http://img.pokemondb.net/sprites/black-white/anim/normal/mudkip.gif", ohno: "http://i.imgur.com/NEHVkJUh.png", omg: "http://i.imgur.com/8d9wCyyh.png", pikachu: "http://img.pokemondb.net/sprites/black-white/anim/normal/pikachu.gif", pikasnooze: "/uploads/emotes/1608_original.gif", pengfufu: "http://i.imgur.com/LGXq6Kbh.png", pepe: "http://i.imgur.com/ejJtTvC.gif", poutyfufu: "http://i.imgur.com/Fvn5nBPh.png", rainfu: "http://i.imgur.com/2XtLgsWh.png", roadkill: "http://i.imgur.com/G6VFBZfh.png", seedot: "http://i.imgur.com/DlZPUkW.gif", shyfox: "/uploads/emotes/18367_original.gif", sleepy: "http://i.imgur.com/7HegR95h.png", snoop: "http://i.imgur.com/F5HViqt.gif", squirtle: "http://i.imgur.com/w9zD7yu.gif", swag: "http://i.imgur.com/6uOsLKH.gif", tofufu: "http://i.imgur.com/XSR8Ceeh.png", uffu: "http://i.imgur.com/JfMlPzAh.png", ufuf: "http://i.imgur.com/ZbFG7JMh.png", ufufu: "http://i.imgur.com/yf55yezh.png", waifufu: "http://i.imgur.com/FfwoAACh.png", wat: "http://i.imgur.com/m9bboaI.png", weed: "http://i.imgur.com/G5EYfSL.png", whimsicott: "http://img.pokemondb.net/sprites/black-white/anim/normal/whimsicott.gif", wink: "http://i.imgur.com/ChIkWIr.png", wwybwds: "http://i.imgur.com/B1q0Y3b.png" }; const EMOJI_REGEX=/([\u2300-\u24ff]|[\u25a0-\u27bf]|[\u2800-\u28ff]|[\u2b00-\u2bff]|\ud83c[\udc00-\udfff]|\ud83d[\udc00-\udeff]|\ud83e[\udd00-\uddff])/g; const EMOJI_LIST=[[128512, 128513, 128514, 129315, 128515, 128516, 128517, 128518, 128521, 128522, 128523, 128526, 128525, 128536, 128535, 128537, 128538, 9786, 128578, 129303, 129300, 128528, 128529, 128566, 128580, 128527, 128547, 128549, 128558, 129296, 128559, 128554, 128555, 128564, 128524, 128539, 128540, 128541, 129316, 128530, 128531, 128532, 128533, 128579, 129297, 128562, 9785, 128577, 128534, 128542, 128543, 128548, 128546, 128557, 128550, 128551, 128552, 128553, 128556, 128560, 128561, 128563, 128565, 128545, 128544, 128567, 129298, 129301, 129314, 129319, 128519, 129312, 129313, 129317, 129299, 128520, 128127, 128121, 128122, 128128, 9760, 128123, 128125, 128126, 129302, 128169], [128118, 128102, 128103, 128104, 128105, 128116, 128117, 128110, 128373, 128130, 128119, 129332, 128120, 128115, 128114, 128113, 129333, 128112, 128124, 127877, 129334, 128589, 128590, 128581, 128582, 128129, 128587, 129318, 129335, 128134, 128135, 129328, 128583, 128694, 127939, 128131, 128378, 128111, 128704, 128716, 128372, 128483, 128100, 128101, 129338, 127943, 9975, 127938, 127948, 127940, 128675, 127946, 9977, 127947, 128692, 128693, 127950, 127949, 129336, 129340, 129341, 129342, 129337, 128107, 128108, 128109, 128143, 128145, 128106], [129331, 128170, 128072, 128073, 9757, 128070, 128405, 128071, 9996, 129310, 128406, 129304, 129305, 128400, 9995, 128076, 128077, 128078, 9994, 128074, 129307, 129308, 129306, 128075, 9997, 128079, 128080, 128588, 128591, 129309, 128133, 128066, 128067, 128099, 128064, 128065, 128069, 128068, 128139, 128152, 10084, 128147, 128148, 128149, 128150, 128151, 128153, 128154, 128155, 128156, 128420, 128157, 128158, 128159, 10083, 128140, 128164, 128162, 128163, 128165, 128166, 128168, 128171, 128172, 128488, 128495, 128173, 128371, 128083, 128374, 128084, 128085, 128086, 128087, 128088, 128089, 128090, 128091, 128092, 128093, 128717, 127890, 128094, 128095, 128096, 128097, 128098, 128081, 128082, 127913, 127891, 9937, 128255, 128132, 128141, 128142], [128584, 128585, 128586, 128570, 128568, 128569, 128571, 128572, 128573, 128576, 128575, 128574, 128053, 128018, 129421, 128054, 128021, 128041, 128058, 129418, 128049, 128008, 129409, 128047, 128005, 128006, 128052, 128014, 129412, 129420, 128046, 128002, 128003, 128004, 128055, 128022, 128023, 128061, 128015, 128017, 128016, 128042, 128043, 128024, 129423, 128045, 128001, 128000, 128057, 128048, 128007, 128063, 129415, 128059, 128040, 128060, 128062, 129411, 128020, 128019, 128035, 128036, 128037, 128038, 128039, 128330, 129413, 129414, 129417, 128056, 128010, 128034, 129422, 128013, 128050, 128009, 128051, 128011, 128044, 128031, 128032, 128033, 129416, 128025, 128026, 129408, 129424, 129425, 128012, 129419, 128027, 128028, 128029, 128030, 128375, 128376, 129410], [128144, 127800, 128174, 127989, 127801, 129344, 127802, 127803, 127804, 127799, 127793, 127794, 127795, 127796, 127797, 127806, 127807, 9752, 127808, 127809, 127810, 127811, 127815, 127816, 127817, 127818, 127819, 127820, 127821, 127822, 127823, 127824, 127825, 127826, 127827, 129373, 127813, 129361, 127814, 129364, 129365, 127805, 127798, 129362, 127812, 129372, 127792, 127838, 129360, 129366, 129374, 129472, 127830, 127831, 129363, 127828, 127839, 127829, 127789, 127790, 127791, 129369, 129370, 127859, 129368, 127858, 129367, 127871, 127857, 127832, 127833, 127834, 127835, 127836, 127837, 127840, 127842, 127843, 127844, 127845, 127841, 127846, 127847, 127848, 127849, 127850, 127874, 127856, 127851, 127852, 127853, 127854, 127855, 127868, 129371, 9749, 127861, 127862, 127870, 127863, 127864, 127865, 127866, 127867, 129346, 129347, 127869, 127860, 129348, 128298, 127994], [127757, 127758, 127759, 127760, 128506, 128510, 127956, 9968, 127755, 128507, 127957, 127958, 127964, 127965, 127966, 127967, 127963, 127959, 127960, 127961, 127962, 127968, 127969, 127970, 127971, 127972, 127973, 127974, 127976, 127977, 127978, 127979, 127980, 127981, 127983, 127984, 128146, 128508, 128509, 9962, 128332, 128333, 9961, 128331, 9970, 9978, 127745, 127747, 127748, 127749, 127750, 127751, 127753, 9832, 127756, 127904, 127905, 127906, 128136, 127914, 127917, 128444, 127912, 127920, 128642, 128643, 128644, 128645, 128646, 128647, 128648, 128649, 128650, 128669, 128670, 128651, 128652, 128653, 128654, 128656, 128657, 128658, 128659, 128660, 128661, 128662, 128663, 128664, 128665, 128666, 128667, 128668, 128690, 128756, 128757, 128655, 128739, 128740, 9981, 128680, 128677, 128678, 128679, 128721, 9875, 9973, 128758, 128676, 128755, 9972, 128741, 128674, 9992, 128745, 128747, 128748, 128186, 128641, 128671, 128672, 128673, 128752, 128640, 128718, 128682, 128719, 128715, 128701, 128703, 128705, 8987, 9203, 8986, 9200, 9201, 9202, 128368, 128347, 128359, 128336, 128348, 128337, 128349, 128338, 128350, 128339, 128351, 128340, 128352, 128341, 128353, 128342, 128354, 128343, 128355, 128344, 128356, 128345, 128357, 128346, 128358], [127761, 127762, 127763, 127764, 127765, 127766, 127767, 127768, 127769, 127770, 127771, 127772, 127777, 9728, 127773, 127774, 11088, 127775, 127776, 9729, 9925, 9928, 127780, 127781, 127782, 127783, 127784, 127785, 127786, 127787, 127788, 127744, 127752, 127746, 9730, 9748, 9969, 9889, 10052, 9731, 9924, 9732, 128293, 128167, 127754, 127875, 127876, 127878, 127879, 10024, 127880, 127881, 127882, 127883, 127885, 127886, 127887, 127888, 127889, 127872, 127873, 127895, 127903, 127915, 127894, 127942, 127941, 129351, 129352, 129353, 9917, 9918, 127936, 127952, 127944, 127945, 127934, 127921, 127923, 127951, 127953, 127954, 127955, 127992, 129354, 129355, 129349, 127919, 9971, 9976, 127907, 127933, 127935, 127918, 128377, 127922, 9824, 9829, 9830, 9827, 127183, 126980, 127924], [128263, 128264, 128265, 128266, 128226, 128227, 128239, 128276, 128277, 127932, 127925, 127926, 127897, 127898, 127899, 127908, 127911, 128251, 127927, 127928, 127929, 127930, 127931, 129345, 128241, 128242, 9742, 128222, 128223, 128224, 128267, 128268, 128187, 128421, 128424, 9000, 128433, 128434, 128189, 128190, 128191, 128192, 127909, 127902, 128253, 127916, 128250, 128247, 128248, 128249, 128252, 128269, 128270, 128300, 128301, 128225, 128367, 128161, 128294, 127982, 128212, 128213, 128214, 128215, 128216, 128217, 128218, 128211, 128210, 128195, 128220, 128196, 128240, 128478, 128209, 128278, 127991, 128176, 128180, 128181, 128182, 128183, 128184, 128179, 128185, 128177, 128178, 9993, 128231, 128232, 128233, 128228, 128229, 128230, 128235, 128234, 128236, 128237, 128238, 128499, 9999, 10002, 128395, 128394, 128396, 128397, 128221, 128188, 128193, 128194, 128450, 128197, 128198, 128466, 128467, 128199, 128200, 128201, 128202, 128203, 128204, 128205, 128206, 128391, 128207, 128208, 9986, 128451, 128452, 128465, 128274, 128275, 128271, 128272, 128273, 128477, 128296, 9935, 9874, 128736, 128481, 9876, 128299, 127993, 128737, 128295, 128297, 9881, 128476, 9879, 9878, 128279, 9939, 128137, 128138, 128684, 9904, 9905, 128511, 128738, 128302, 128722], [127975, 128686, 128688, 9855, 128697, 128698, 128699, 128700, 128702, 128706, 128707, 128708, 128709, 9888, 128696, 9940, 128683, 128691, 128685, 128687, 128689, 128695, 128245, 128286, 9762, 9763, 11014, 8599, 10145, 8600, 11015, 8601, 11013, 8598, 8597, 8596, 8617, 8618, 10548, 10549, 128259, 128260, 128281, 128282, 128283, 128284, 128285, 128720, 9883, 128329, 10017, 9784, 9775, 10013, 9766, 9770, 9774, 128334, 128303, 9800, 9801, 9802, 9803, 9804, 9805, 9806, 9807, 9808, 9809, 9810, 9811, 9934, 128256, 128257, 128258, 9654, 9193, 9197, 9199, 9664, 9194, 9198, 128316, 9195, 128317, 9196, 9208, 9209, 9210, 127910, 128261, 128262, 128246, 128243, 128244, 9877, 9851, 9884, 128305, 128219, 128304, 11093, 9989, 9745, 10004, 10006, 10060, 10062, 10133, 10134, 10135, 10160, 10175, 12349, 10035, 10036, 10055, 8252, 8265, 10067, 10068, 10069, 10071, 12336, 169, 174, 8482, 128287, 128175, 128288, 128289, 128290, 128291, 128292, 127344, 127374, 127345, 127377, 127378, 127379, 8505, 127380, 9410, 127381, 127382, 127358, 127383, 127359, 127384, 127385, 127386, 127489, 127490, 127543, 127542, 127535, 127568, 127545, 127514, 127538, 127569, 127544, 127540, 127539, 12951, 12953, 127546, 127541, 9642, 9643, 9723, 9724, 9725, 9726, 11035, 11036, 128310, 128311, 128312, 128313, 128314, 128315, 128160, 128280, 128306, 128307, 9898, 9899, 128308, 128309, 127937, 128681, 127884, 127988, 127987]]; function firstId() { for(var i=0, node; i<arguments.length; i++) { if(node=document.getElementById(arguments[i])) { return node; } } } void function() { var style=document.createElement("style"); style.type="text/css"; style.textContent=` .emoji { font-size: 1.5em; font-family: "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Android Emoji"; } .fullwidth { max-width: 100%; } .custom-emote { max-width: 25px; max-height: 25px; } #lobbychat.expanded #window { height: auto !important; } #lobbychat.expanded #window_i { height: 400px !important; } #lobbychat.expanded #chatbar { position: initial !important; } #emojinav { display: inline-block; margin: 1em; } #emojinav a { filter: grayscale(1); } #emojinav a:hover { filter: none; } #emojibox span { cursor: pointer; width: 1em; height: 1em; margin: 0.2em; font-size: 1.5em; display: inline-block; } #emojibox span:hover { transform: scale(1.3); } `; document.head.appendChild(style); }(); void function() { var lobby=false; var loaded=false; var buttons=firstId("speak"); function makeToggle(title, icon, listener, toggle) { var node=document.createElement("a"); if(lobby) { node.className="chat_toggle rt tt"; node.dataset.title=title; } else { node.title=title; } node.appendChild( document.createElement("i") ).className=icon; node.addEventListener("click", listener); if(toggle) { node.click(); } return node; } if(location.pathname==="/lobby") { lobby=true; buttons=document.querySelector("#lobbychat .separator"); buttons.appendChild( makeToggle( "Expand chat", "icon-plus", function(event) { localStorage.expand_chat=this.classList.toggle("sel"); firstId("lobbychat").classList.toggle("expanded"); }, localStorage.expand_chat==="true" ) ); } buttons.appendChild( makeToggle( "Enable formatting", "icon-font", function(event) { localStorage.chat_format=this.classList.toggle("sel"); }, localStorage.chat_format!=="false" ) ); buttons.appendChild( makeToggle( "Show emojis", "icon-github-alt", function(event) { this.classList.toggle("sel"); firstId("emojibox").classList.toggle("hide"); } ) ); }(); void function() { var page=1; function event_page(event) { firstId(`emojilist-${page}`).classList.add("hide"); page=this.dataset.page; firstId(`emojilist-${page}`).classList.remove("hide"); } function event_emoji(event) { var input=firstId("chatbar", "typebox") input.value+=this.textContent; input.dispatchEvent( new Event("change") ); input.focus(); } var emobox=document.createElement("div"); emobox.id="emojibox"; emobox.className="hide"; var emonav=document.createElement("div"); emonav.id="emojinav"; emonav.textContent="Jump to... "; emobox.appendChild(emonav); emobox.appendChild( document.createElement("br") ); EMOJI_LIST.forEach(function(list, i) { var link=document.createElement("a"); link.dataset.page=i+1; link.textContent=String.fromCodePoint(list[0]); link.addEventListener("click", event_page); emonav.appendChild(link); var table=document.createElement("div"); table.id=`emojilist-${i+1}`; if(i > 0) { table.className="hide"; } list.forEach(function(code) { var emoji=document.createElement("span"); emoji.className="emoji"; emoji.textContent=String.fromCodePoint(code); emoji.addEventListener("click", event_emoji); table.appendChild(emoji) }); emobox.appendChild(table); }); firstId("lobbychat", "screen").appendChild(emobox); }(); new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { mutation.addedNodes.forEach(function(node) { if(node.nodeType===HTMLElement.ELEMENT_NODE && node.classList.contains("talk")) { node=node.querySelector(".msg, .msg_wrapper") || node; if(node.textContent.substring(0, 4)==="$img") { var src=node.textContent.match(/(\w+:\/\/[^\s\?#]+)/); if(src && ~VALID_IMG.indexOf(src[0].replace(/.+(\.\w+)/, "$1"))) { var link=document.createElement("a"); var image=document.createElement("img"); image.src=src[0]; image.className="fullwidth"; link.href=src[0]; link.appendChild(image); node.parentNode.append( document.createElement("br"), link ); } } if(localStorage.chat_format!=="false") { node.innerHTML=node.innerHTML .replace(/(^|\s)\*\*(.+?)\*\*/g, "$1<b>$2</b>") .replace(/(^|\s)\*(.+?)\*/g, "$1<i>$2</i>") .replace(/(^|\s)__(.+?)__/g, "$1<u>$2</u>") .replace(/(^|\s)~~(.+?)~~/g, "$1<s>$2</s>") .replace(/(^|\s)(\w+:\/\/\S+)/g, "$1<a href='$2' target='_blank'>$2</a>") .replace(EMOJI_REGEX, "<span class='emoji'>$1</span>"); } } }); }); }).observe( firstId("window_i", "window"), { childList: true } ); window.addEventListener("load", function(event) { var emotes=unsafeWindow.lobby_emotes || unsafeWindow.lobbyinfo; if(emotes) { if(emotes.emotes) { emotes=emotes.emotes; } for(var key in EM_OATS) { if(!emotes[":"+key+":"]) { emotes[":"+key+":"]=EM_OATS[key]; } } } }); window.addEventListener("keydown", function(event) { if(!event.ctrlKey && event.target.value===undefined) { firstId("chatbar", "typebox").focus(); } });