SilentBalance

Отключает звук перевода денег (balance.mp3), но оставляет звук сообщений

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         SilentBalance
// @namespace    http://tampermonkey.net/
// @version      1.0
// @author       Welhord
// @description  Отключает звук перевода денег (balance.mp3), но оставляет звук сообщений
// @match        https://lolz.live/*
// @match        https://zelenka.guru/*
// @match        https://lzt.market/*
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    const STORAGE_KEY = 'lzt_balance_mute';
    let enabled = localStorage.getItem(STORAGE_KEY) !== '0';

    const ICON_ON = `
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<path fill="rgb(148,148,148)" d="M11.025 21v-2.15q-1.325-.3-2.287-1.15t-1.413-2.4l1.85-.75q.375 1.2 1.113 1.825t1.937.625q1.025 0 1.738-.462t.712-1.438q0-.875-.55-1.387t-2.55-1.163q-2.15-.675-2.95-1.612t-.8-2.288q0-1.625 1.05-2.525t2.15-1.025V3h2v2.1q1.25.2 2.063.913t1.187 1.737l-1.85.8q-.3-.8-.85-1.2t-1.5-.4q-1.1 0-1.675.488T9.825 8.65q0 .825.75 1.3t2.6 1q1.725.5 2.613 1.588t.887 2.512q0 1.775-1.05 2.7t-2.6 1.15V21z"/>
</svg>`;

    const ICON_OFF = `
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<path fill="rgb(148,148,148)" d="M14.35 8.55q-.3-.75-.887-1.175T12.05 6.95q-.45 0-.875.125t-.775.475L8.95 6.1q.35-.35.95-.638T11 5.1V3h2v2.05q1.125.225 1.975.913T16.25 7.75zM19.8 22.6L15.2 18q-.375.375-1.025.613T13 18.9V21h-2v-2.15q-1.4-.35-2.337-1.275T7.3 15.25l2-.8q.3 1.05 1.013 1.8T12.2 17q.45 0 .825-.112t.725-.338L1.4 4.2l1.4-1.4l18.4 18.4z"/>
</svg>`;

    const originalPlay = HTMLAudioElement.prototype.play;

    HTMLAudioElement.prototype.play = function () {

        if (
            enabled &&
            this.src &&
            this.src.includes('balance.mp3')
        ) {
            return Promise.resolve();
        }

        return originalPlay.apply(this, arguments);
    };

    const uiTimer = setInterval(() => {

        const controls = document.querySelector('.conversation-controls');
        const soundBtn = document.querySelector('#SoundNotificationSwitcher');

        if (!controls || !soundBtn) return;

        if (document.querySelector('#BalanceMuteSwitcher')) {
            clearInterval(uiTimer);
            return;
        }

        const btn = document.createElement('div');
        btn.id = 'BalanceMuteSwitcher';
        btn.className = 'f_r conversationControl Tooltip OverlayTrigger';
        btn.style.cursor = 'pointer';

        const icon = document.createElement('span');
        icon.style.display = 'flex';
        icon.style.alignItems = 'center';
        icon.style.height = '18px';
        icon.style.lineHeight = '18px';
        icon.style.transform = 'translateY(-1px)';

        btn.appendChild(icon);

        function render() {
            icon.innerHTML = enabled ? ICON_OFF : ICON_ON;

            btn.setAttribute(
                'title',
                enabled
                    ? 'Звук перевода отключён'
                    : 'Звук перевода включён'
            );
        }

        render();

        btn.onclick = () => {
            enabled = !enabled;
            localStorage.setItem(STORAGE_KEY, enabled ? '1' : '0');
            render();
        };

        soundBtn.after(btn);

        clearInterval(uiTimer);

    }, 300);

})();