Chat Box Section

Creates a separated section for the chat box

2025-01-12 기준 버전입니다. 최신 버전을 확인하세요.

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name        Chat Box Section
// @namespace   Violentmonkey Scripts
// @match       https://web.simple-mmo.com/*
// @grant       none
// @license     GPL-v3
// @version     1.4.4
// @author      Freaky Fingers
// @description Creates a separated section for the chat box
// ==/UserScript==
//Startup Sequence Variables
let smmoChat = null

document.querySelectorAll("[x-init]").forEach(xinit => {
  if (xinit.outerHTML.includes("chat:false,chatSrc:'about:blank;'")){
    return smmoChat = xinit
  }
})

if (!smmoChat) return;
smmoChat.style.cssText = "position: fixed; height: 100%; margin-top: 4rem";

//Script Variables
const chatWidth = 20
const gameParent = document.body.querySelector('.h-screen.flex.overflow-hidden.bg-gray-100')
const newButton = document.createElement("button")
const newHTML = document.createElement("div")
const chatBox = document.getElementById("chatBox")
const chatButton = document.getElementById("show_hide_chat_btn")

chatBox.style.cssText = `position: relative; height: calc(100% - 4rem); width: ${chatWidth}vw; padding: 0rem`;
chatButton.style.display = 'none';

//Functions
function ButtonPos() {
  if (window.innerWidth > 1740) {
    try {newButton.style.removeProperty('left');
    newButton.style.removeProperty('bottom');}
    finally{newButton.style.right = "5rem";
    newButton.style.top = "0.6rem"; return}
  }
  newButton.style.removeProperty('top');
  newButton.style.removeProperty('right');
  newButton.style.left = "17rem";
  newButton.style.bottom = "1rem"
}
window.addEventListener('resize',ButtonPos);
setTimeout(ButtonPos, 100);

newButton.onmousedown = () => {
  newHTML.style.display = newHTML.style.display === "none" ? "block" : "none";
  chatButton.click();
};

//Main Script
newButton.innerHTML = "Show/Hide Chat";
newButton.style.cssText = "position: fixed; padding: 0.5rem; background-color: #000; border: 2px solid #C0C0C0; right: 5rem; top: 0.6rem; border-radius: 0.5rem; color: #C0C0C0; z-index: 30; font-size: 0.8rem";
newHTML.style.cssText = `background-color: rgb(17 17 17 / var(--tw-bg-opacity)); height: 94vh; width: ${chatWidth}vw; float: right; position: sticky; z-index: 1; display: none`;

document.onkeydown = event => {
  if (event.code === 'NumpadEnter') {
    newButton.onmousedown()
  }
}

if(docCookies.getItem('show_chat') === 'true') {
  newHTML.style.display = "block"
}

gameParent.style.cssText = `z-index: 2; position: relative`;

document.getElementById("app").insertAdjacentElement(`afterbegin`, newHTML);
document.querySelector(".web-app-container").insertAdjacentElement(`afterbegin`, newButton);
newHTML.appendChild(smmoChat);