您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
천봉 사이트 한글화
// ==UserScript== // @name 천봉 한글화 // @namespace http://tampermonkey.net/ // @version 1.5 // @description 천봉 사이트 한글화 // @author 1 // @match https://tenhou.net/3/* // @match https://tenhou.net/0/wg/* // @match https://tenhou.net/*make_lobby* // @icon https://yt3.googleusercontent.com/J7QbevqvDkLbkI77_6EXxacKeq3SEvAfQ8pnlpyQ5RBzVjDHyMmNQ9UIOYc43nIQ6i5DKDCnCw=s160-c-k-c0x00ffffff-no-rj // @grant none // @run-at document-idle // ==/UserScript== (function() { 'use strict'; let lobbyNumber; let el = []; let pageURL = location.href; const firstTransData = { "四般東喰赤速": "4일반 동풍탕적속", "四般東喰赤光": "4일반 동풍탕적광", "四般東喰赤": "4일반 동풍탕적", "四般東喰": "4일반 동풍탕", "四般東": "4일반 동풍전", "四般南喰赤速": "4일반 남풍탕적속", "四般南喰赤光": "4일반 남풍탕적광", "四般南喰赤": "4일반 남풍탕적", "四般南喰": "4일반 남풍탕", "四般南": "4일반 남풍전", "三般東喰赤速": "3일반 동풍탕적속", "三般東喰赤光": "3일반 동풍탕적광", "三般東喰赤": "3일반 동풍탕적", "三般東喰": "3일반 동풍탕", "三般東": "3일반 동풍전", "三般南喰赤速": "3일반 남풍탕적속", "三般南喰赤光": "3일반 동풍탕적광", "三般南喰赤": "3일반 남풍탕적", "三般南喰": "3일반 남풍탕", "三般南": "3일반 남풍전", "四上東喰赤速": "4상탁 동풍탕적속", "四上東喰赤光": "4상탁 동풍탕적광", "四上東喰赤": "4상탁 동풍탕적", "四上東喰": "4상탁 동풍탕", "四上東": "4상탁 동풍전", "四上南喰赤速": "4상탁 남풍탕적속", "四上南喰赤光": "4상탁 남풍탕적광", "四上南喰赤": "4상탁 남풍탕적", "四上南喰": "4상탁 남풍탕", "四上南": "4상탁 남풍전", "三上東喰赤速": "3상탁 동풍탕적속", "三上東喰赤光": "3상탁 동풍탕적광", "三上東喰赤": "3상탁 동풍탕적", "三上東喰": "3상탁 동풍탕", "三上東": "3상탁 동풍전", "三上南喰赤速": "3상탁 남풍탕적속", "三上南喰赤光": "3상탁 남풍탕적광", "三上南喰赤": "3상탁 남풍탕적", "三上南喰": "3상탁 남풍탕", "三上南": "3상탁 남풍전", "四特東喰赤速": "4특상 동풍탕적속", "四特東喰赤光": "4특상 동풍탕적광", "四特東喰赤": "4특상 동풍탕적", "四特東喰": "4특상 동풍탕", "四特東": "4특상 동풍전", "四特南喰赤速": "4특상 남풍탕적속", "四特南喰赤光": "4특상 남풍탕적광", "四特南喰赤": "4특상 남풍탕적", "四特南喰": "4특상 남풍탕", "四特南": "4특상 남풍전", "三特東喰赤速": "3특상 동풍탕적속", "三特東喰赤光": "3특상 동풍탕적광", "三特東喰赤": "3특상 동풍탕적", "三特東喰": "3특상 동풍탕", "三特東": "3특상 동풍전", "三特南喰赤速": "3특상 남풍탕적속", "三特南喰赤光": "3특상 남풍탕적광", "三特南喰赤": "3특상 남풍탕적", "三特南喰": "3특상 남풍탕", "三特南": "3특상 남풍전", "四鳳東喰赤速": "4봉황 동풍탕적속", "四鳳東喰赤光": "4봉황 동풍탕적광", "四鳳東喰赤": "4봉황 동풍탕적", "四鳳東喰": "4봉황 동풍탕", "四鳳東": "4봉황 동풍전", "四鳳南喰赤速": "4봉황 남풍탕적속", "四鳳南喰赤光": "4봉황 남풍탕적광", "四鳳南喰赤": "4봉황 남풍탕적", "四鳳南喰": "4봉황 남풍탕", "四鳳南": "4봉황 남풍전", "三鳳東喰赤速": "3봉황 동풍탕적속", "三鳳東喰赤": "3봉황 동풍탕적", "三鳳東喰": "3봉황 동풍탕", "三鳳東": "3봉황 동풍전", "三鳳南喰赤速": "3봉황 남풍탕적속", "三鳳南喰赤": "3봉황 남풍탕적", "三鳳南喰": "3봉황 남풍탕", "三鳳南": "3봉황 남풍전", "四麻雀荘戦": "4마 작장전", "三麻雀荘戦": "3마 작장전", "三麻":"3마 ", "四麻":"4마 ", "観戦":"관전", "段位戦":"랭킹전", "新人": "신인", "1級": "1급", "1級": "1급", "2級": "2급", "3級": "3급", "4級": "4급", "5級": "5급", "6級": "6급", "7級": "7급", "8級": "8급", "9級": "9급", "10級": "10급", "初段": "초단", "一段": "1단", "二段": "2단", "三段": "3단", "四段": "4단", "五段": "5단", "六段": "6단", "七段": "7단", "八段": "8단", "九段": "9단", "十段": "10단", "鳳凰卓": "봉황탁", "特上卓": "특상탁", "上級卓": "상급탁", "対戦": "대전", }; // 텍스트 교체 function replaceText(root=document.body){ const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, null, false); let nodes = []; while(walker.nextNode()) nodes.push(walker.currentNode); for(let node of nodes){ if(node.parentElement.nodeName === "A"){ node.parentElement.href = node.parentElement.href.replace("tenhou.net/0/", "tenhou.net/3/"); } for(let key in firstTransData){ node.nodeValue = node.nodeValue.replace(new RegExp(key,"g"), firstTransData[key]); } } } // MutationObserver 설정 const observer = new MutationObserver((mutations)=>{ for(let m of mutations){ if(m.type === "childList" || m.type === "characterData"){ replaceText(m.target); } } }); function startObserver(){ observer.observe(document.body, {childList:true, subtree:true, characterData:true}); } // 로비 페이지 UI function E(idx,id,cls,tag,type,parent){ el[idx] = document.createElement(tag); if(id) el[idx].id = id; if(cls) el[idx].className = cls; if(type) el[idx].type = type; parent.appendChild(el[idx]); } function makePage(){ let match = document.body.innerText.match(/【天鳳 個室L(\d+)】/); if(!match) return; lobbyNumber = match[1]; document.title = "천봉 L"+lobbyNumber; document.body.style = "background-color:#A6A6A6;text-align:center;padding-top:40px;"; document.body.innerHTML = ''; E(0,'startbtn','btn','button','button',document.body); el[0].innerText = `【생성된 천봉 로비 L${lobbyNumber}】`; document.body.innerHTML+='<br>'; E(1,'sharebtn','btn','button','button',document.body); el[1].innerText = "【로비 접속 링크 공유】"; E(3,'copybox','','div','',document.body); el[3].style.display='none'; el[3].innerHTML="클립보드로 복사되었습니다.<br>"; E(4,'copytext','','textarea','',el[3]); el[4].value='https://tenhou.net/3/?L'+lobbyNumber; E(5,'wgbtn','btn','button','button',document.body); el[5].innerText="【관전 링크 공유】"; window.addEventListener("click",(e)=>{ if(e.target.id===el[1].id){ el[4].value='https://tenhou.net/3/?L'+lobbyNumber; el[3].style.display='block'; el[4].select(); document.execCommand("copy"); }else if(e.target.id===el[0].id){ location.href='https://tenhou.net/3/?L'+lobbyNumber; }else if(e.target.id===el[5].id){ el[4].value='https://tenhou.net/0/wg/?L'+lobbyNumber; el[3].style.display='block'; el[4].select(); document.execCommand("copy"); }else{ el[3].style.display='none'; } }); } // 관전 페이지 function wgPage(){ let ws = document.getElementsByClassName('w'); for(let w of ws) w.remove(); document.title="천봉 / 관전"; } // 시작 function startUp(){ if(pageURL.includes('make_lobby')) makePage(); else if(pageURL.includes('/wg/')) wgPage(); replaceText(); startObserver(); } // 페이지 로딩 후 실행 if(document.readyState==="loading"){ window.addEventListener('DOMContentLoaded', startUp); }else{ startUp(); } })();