- // ==UserScript==
- // @name TW Chat Alert
- // @namespace http://tampermonkey.net/
- // @version 1.25.3.20.2338
- // @description Notification with sound and highlighted background when a keyword appears in the chat (with GUI for management)
- // @author qtMety (in game Annienta Montagne)
- // @include https://*.the-west.*/game.php*
- // @grant none
- // ==/UserScript==
-
- (function() {
- 'use strict';
-
- let settings = JSON.parse(localStorage.getItem("TWCAchatKeywordAlertSettings")) || {
- keywords: [
- "word", "two words", "three words?", "another keyword", "ward",
- "wod", "wor",
- ],
- checkInterval: 15000,
- enableSound: true,
- highlightBgColor: "#000000", // Default: sfondo nero
- highlightTextColor: "#FFFFFF" // Default: testo bianco
- };
-
- let languageStorage = localStorage.getItem("TWCALanguage") || "en";
-
- let chatCheckInterval;
-
- let seenMessages = new Set();
- const alertSound = new Audio("https://www.myinstants.com/media/sounds/tindeck_1.mp3");
-
- const translations = {
- br: {
- saveSettings: "Salvar Configurações",
- resetDefaults: "Restaurar Padrões",
- keywordsTitle: "Palavras-chave ativas:",
- enableSound: "Ativar Som",
- checkInterval: "Intervalo de Verificação",
- volume: "Volume",
- highlightBgColor: "Cor de Fundo Destacada:",
- highlightTextColor: "Cor do Texto Destacado:",
- selectLanguage: "Selecionar Idioma",
- settingsSavedSuccess: "Configurações salvas com sucesso!",
- settingsDefaultSuccess: "Configurações restauradas",
- language: "Português (Brasil)",
- informationText: "Informações",
- informationsContentText: "Este script tem como objetivo destacar palavras-chave no chat do jogo e receber um som de alerta! <br> Você pode usá-lo, por exemplo, para seu apelido no jogo ou para compra e venda de itens!",
- languageText: "Idioma",
- contactText: "Contato",
- contactInfosText: "Você pode me enviar uma mensagem privada (escrevendo para Annienta Montagne) no mundo 1 do the-west: it1.the-west.it",
- donationText: "Ajude-me a continuar o desenvolvimento com uma pequena doação!",
- versionText: "Versão"
- },
- cs: {
- saveSettings: "Uložit nastavení",
- resetDefaults: "Obnovit výchozí",
- keywordsTitle: "Aktivní klíčová slova:",
- enableSound: "Povolit zvuk",
- checkInterval: "Interval kontroly",
- volume: "Hlasitost",
- highlightBgColor: "Zvýrazněná barva pozadí:",
- highlightTextColor: "Zvýrazněná barva textu:",
- selectLanguage: "Vybrat jazyk",
- settingsSavedSuccess: "Nastavení bylo úspěšně uloženo!",
- settingsDefaultSuccess: "Nastavení bylo obnoveno",
- language:"Čeština",
- informationText: "Informace",
- informationsContentText: "Tento skript má za cíl zvýraznit klíčová slova v herním chatu a upozornit vás zvukem! <br> Můžete jej využít například pro svou herní přezdívku nebo pro obchodování s předměty!",
- languageText: "Jazyk",
- contactText: "Kontakt",
- contactInfosText: "Můžete mi poslat soukromou zprávu (napsat Annienta Montagne) na světě 1 v the-west: it1.the-west.it",
- donationText: "Podpořte další vývoj malým příspěvkem!",
- versionText: "Verze"
- },
- de: {
- saveSettings: "Einstellungen speichern",
- resetDefaults: "Auf Standard zurücksetzen",
- keywordsTitle: "Aktive Schlüsselwörter:",
- enableSound: "Ton aktivieren",
- checkInterval: "Prüfintervall",
- volume: "Lautstärke",
- highlightBgColor: "Hervorgehobene Hintergrundfarbe:",
- highlightTextColor: "Hervorgehobene Textfarbe:",
- selectLanguage: "Sprache auswählen",
- settingsSavedSuccess: "Einstellungen erfolgreich gespeichert!",
- settingsDefaultSuccess: "Einstellungen zurückgesetzt",
- language:"Deutsch",
- informationText: "Informationen",
- informationsContentText: "Dieses Skript hebt Schlüsselwörter im Spielchat hervor und benachrichtigt dich per Ton! <br> Nutze es beispielsweise für deinen Spielnamen oder für den Kauf und Verkauf von Gegenständen!",
- languageText: "Sprache",
- contactText: "Kontakt",
- contactInfosText: "Du kannst mir eine private Nachricht senden (schreibe an Annienta Montagne) auf Welt 1 von the-west: it1.the-west.it",
- donationText: "Hilf mir, die Entwicklung mit einer kleinen Spende fortzusetzen!",
- versionText: "Version"
- },
- el: {
- saveSettings: "Αποθήκευση ρυθμίσεων",
- resetDefaults: "Επαναφορά προεπιλογών",
- keywordsTitle: "Ενεργές λέξεις-κλειδιά:",
- enableSound: "Ενεργοποίηση ήχου",
- checkInterval: "Διάστημα ελέγχου",
- volume: "Ένταση",
- highlightBgColor: "Χρώμα επισημασμένου φόντου:",
- highlightTextColor: "Χρώμα επισημασμένου κειμένου:",
- selectLanguage: "Επιλογή γλώσσας",
- settingsSavedSuccess: "Οι ρυθμίσεις αποθηκεύτηκαν με επιτυχία!",
- settingsDefaultSuccess: "Οι ρυθμίσεις επαναφέρθηκαν",
- language:"Ελληνικά",
- informationText: "Πληροφορίες",
- informationsContentText: "Αυτό το σενάριο έχει σκοπό να επισημάνει λέξεις-κλειδιά στη συνομιλία του παιχνιδιού και να σε ειδοποιήσει με ήχο! <br> Μπορείς να το χρησιμοποιήσεις, π.χ. για το όνομα του χαρακτήρα σου ή για αγορές και πωλήσεις αντικειμένων!",
- languageText: "Γλώσσα",
- contactText: "Επικοινωνία",
- contactInfosText: "Μπορείς να μου στείλεις προσωπικό μήνυμα (γράψε στον Annienta Montagne) στον κόσμο 1 του the-west: it1.the-west.it",
- donationText: "Βοήθησέ με να συνεχίσω την ανάπτυξη με μια μικρή δωρεά!",
- versionText: "Έκδοση"
- },
- en: {
- saveSettings: "Save Settings",
- resetDefaults: "Reset Defaults",
- keywordsTitle: "Active Keywords:",
- enableSound: "Enable Sound",
- checkInterval: "Check Interval",
- volume: "Volume",
- highlightBgColor: "Highlighted Background Color:",
- highlightTextColor: "Highlighted Text Color:",
- selectLanguage: "Select Language",
- settingsSavedSuccess: "Settings saved successfully!",
- settingsDefaultSuccess: "Settings restored",
- language:"English",
- informationText: "Information",
- informationsContentText: "This script aims to highlight keywords in the game chat and notify you with a sound! <br> You can use it, for example, for your in-game nickname or for buying and selling items!",
- languageText: "Language",
- contactText: "Contact",
- contactInfosText: "You can send me a private message (write to Annienta Montagne) on world 1 of the-west: it1.the-west.it",
- donationText: "Help me continue development with a small donation!",
- versionText: "Version"
- },
- es: {
- saveSettings: "Guardar Configuración",
- resetDefaults: "Restablecer Predeterminados",
- keywordsTitle: "Palabras clave activas:",
- enableSound: "Habilitar Sonido",
- checkInterval: "Intervalo de Comprobación",
- volume: "Volumen",
- highlightBgColor: "Color de fondo resaltado:",
- highlightTextColor: "Color del texto resaltado:",
- selectLanguage: "Seleccionar Idioma",
- settingsSavedSuccess: "¡Configuración guardada con éxito!",
- settingsDefaultSuccess: "Configuración restablecida",
- language:"Español",
- informationText: "Información",
- informationsContentText: "Este script destaca palabras clave en el chat del juego y te avisa con un sonido! <br> Puedes usarlo, por ejemplo, para tu apodo en el juego o para comprar y vender objetos!",
- languageText: "Idioma",
- contactText: "Contacto",
- contactInfosText: "Puedes enviarme un mensaje privado (escribe a Annienta Montagne) en el mundo 1 de the-west: it1.the-west.it",
- donationText: "¡Ayúdame a seguir desarrollando con una pequeña donación!",
- versionText: "Versión"
- },
- fr: {
- saveSettings: "Enregistrer les paramètres",
- resetDefaults: "Réinitialiser les paramètres",
- keywordsTitle: "Mots-clés actifs :",
- enableSound: "Activer le son",
- checkInterval: "Intervalle de vérification",
- volume: "Volume",
- highlightBgColor: "Couleur de fond mise en évidence :",
- highlightTextColor: "Couleur du texte mise en évidence :",
- selectLanguage: "Sélectionner la langue",
- settingsSavedSuccess: "Paramètres enregistrés avec succès!",
- settingsDefaultSuccess: "Paramètres réinitialisés",
- language:"Français",
- informationText: "Informations",
- informationsContentText: "Ce script met en évidence des mots-clés dans le chat du jeu et t'avertit par un son ! <br> Tu peux l'utiliser, par exemple, pour ton pseudo en jeu ou pour l'achat et la vente d'objets !",
- languageText: "Langue",
- contactText: "Contact",
- contactInfosText: "Tu peux m'envoyer un message privé (écrire à Annienta Montagne) sur le monde 1 de the-west : it1.the-west.it",
- donationText: "Aide-moi à poursuivre le développement avec une petite donation !",
- versionText: "Version"
- },
- hu: {
- saveSettings: "Beállítások mentése",
- resetDefaults: "Alapértelmezés visszaállítása",
- keywordsTitle: "Aktív kulcsszavak:",
- enableSound: "Hang bekapcsolása",
- checkInterval: "Ellenőrzési időköz",
- volume: "Hangerő",
- highlightBgColor: "Kiemelt háttérszín:",
- highlightTextColor: "Kiemelt szövegszín:",
- selectLanguage: "Nyelv kiválasztása",
- settingsSavedSuccess: "Beállítások sikeresen mentve!",
- settingsDefaultSuccess: "Beállítások visszaállítva",
- language:"Magyar",
- informationText: "Információk",
- informationsContentText: "Ez a szkript kulcsszavakat emel ki a játék chatjében, és hanggal értesít téged! <br> Használhatod például a játékbeli nevedhez vagy tárgyak adás-vételéhez!",
- languageText: "Nyelv",
- contactText: "Kapcsolat",
- contactInfosText: "Küldhetsz nekem privát üzenetet (írj Annienta Montagne-nek) a the-west 1-es világán: it1.the-west.it",
- donationText: "Támogass egy kis adománnyal a további fejlesztésekhez!",
- versionText: "Verzió"
- },
- it: {
- saveSettings: "Salva Impostazioni",
- resetDefaults: "Ripristina Predefiniti",
- keywordsTitle: "Parole chiave attive:",
- enableSound: "Abilita Suono",
- checkInterval: "Intervallo di Controllo",
- volume: "Volume",
- highlightBgColor: "Colore sfondo evidenziato:",
- highlightTextColor: "Colore testo evidenziato:",
- selectLanguage: "Seleziona Lingua",
- settingsSavedSuccess: "Impostazioni salvate con successo!",
- settingsDefaultSuccess: "Impostazioni ripristinate",
- language:"Italiano",
- informationText: "Informazioni",
- informationsContentText: "Questo script ha lo scopo di evidenziare delle parole chiave all'interno della chat di gioco e ricevere un suono per essere avvisato! <br> Puoi usarlo, ad esempio, per il tuo nickname in gioco, oppure per la compravendita di oggetti!",
- languageText: "Linguaggio",
- contactText: "Contatti",
- contactInfosText: "Puoi mandarmi un messaggio privato (scrivendo ad Annienta Montagne) su world 1 di the-west: it1.the-west.it",
- donationText: "Aiutami a continuare con lo sviluppo con una piccola donazione!",
- versionText: "Versione"
- },
- nl: {
- saveSettings: "Instellingen opslaan",
- resetDefaults: "Standaardwaarden herstellen",
- keywordsTitle: "Actieve zoekwoorden:",
- enableSound: "Geluid inschakelen",
- checkInterval: "Controle-interval",
- volume: "Volume",
- highlightBgColor: "Gemarkeerde achtergrondkleur:",
- highlightTextColor: "Gemarkeerde tekstkleur:",
- selectLanguage: "Selecteer Taal",
- settingsSavedSuccess: "Instellingen succesvol opgeslagen!",
- settingsDefaultSuccess: "Instellingen hersteld",
- language:"Dutch",
- informationText: "Informatie",
- informationsContentText: "Dit script markeert trefwoorden in de gamechat en waarschuwt je met een geluid! <br> Je kunt het bijvoorbeeld gebruiken voor je in-game bijnaam of voor de handel in items!",
- languageText: "Taal",
- contactText: "Contact",
- contactInfosText: "Je kunt me een privébericht sturen (schrijf naar Annienta Montagne) op wereld 1 van the-west: it1.the-west.it",
- donationText: "Help me de ontwikkeling voort te zetten met een kleine donatie!",
- versionText: "Versie"
- },
- pl: {
- saveSettings: "Zapisz ustawienia",
- resetDefaults: "Przywróć domyślne",
- keywordsTitle: "Aktywne słowa kluczowe:",
- enableSound: "Włącz dźwięk",
- checkInterval: "Interwał sprawdzania",
- volume: "Głośność",
- highlightBgColor: "Podświetlony kolor tła:",
- highlightTextColor: "Podświetlony kolor tekstu:",
- selectLanguage: "Wybierz język",
- settingsSavedSuccess: "Ustawienia zapisane pomyślnie!",
- settingsDefaultSuccess: "Ustawienia przywrócone",
- language:"Polski",
- informationText: "Informacje",
- informationsContentText: "Ten skrypt podkreśla słowa kluczowe na czacie gry i powiadamia cię dźwiękiem! <br> Możesz go użyć np. dla swojego pseudonimu w grze lub do handlu przedmiotami!",
- languageText: "Język",
- contactText: "Kontakt",
- contactInfosText: "Możesz wysłać mi prywatną wiadomość (napisz do Annienta Montagne) na świecie 1 the-west: it1.the-west.it",
- donationText: "Pomóż mi kontynuować rozwój dzięki drobnej darowiźnie!",
- versionText: "Wersja"
- },
- pt: {
- saveSettings: "Salvar Configurações",
- resetDefaults: "Restaurar Padrões",
- keywordsTitle: "Palavras-chave ativas:",
- enableSound: "Ativar Som",
- checkInterval: "Intervalo de Verificação",
- volume: "Volume",
- highlightBgColor: "Cor de Fundo Destacada:",
- highlightTextColor: "Cor do Texto Destacado:",
- selectLanguage: "Selecionar Idioma",
- settingsSavedSuccess: "Configurações salvas com sucesso!",
- settingsDefaultSuccess: "Configurações restauradas",
- language:"Português",
- informationText: "Informações",
- informationsContentText: "Este script tem como objetivo destacar palavras-chave no chat do jogo e alertá-lo com um som! <br> Você pode usá-lo, por exemplo, para o seu apelido no jogo ou para compra e venda de itens!",
- languageText: "Idioma",
- contactText: "Contato",
- contactInfosText: "Você pode me enviar uma mensagem privada (escrevendo para Annienta Montagne) no mundo 1 do the-west: it1.the-west.it",
- donationText: "Ajude-me a continuar o desenvolvimento com uma pequena doação!",
- versionText: "Versão"
- },
- ro: {
- saveSettings: "Salvare setări",
- resetDefaults: "Resetare implicită",
- keywordsTitle: "Cuvinte cheie active:",
- enableSound: "Activare sunet",
- checkInterval: "Interval de verificare",
- volume: "Volum",
- highlightBgColor: "Culoare de fundal evidențiată:",
- highlightTextColor: "Culoare text evidențiat:",
- selectLanguage: "Selectare limbă",
- settingsSavedSuccess: "Setări salvate cu succes!",
- settingsDefaultSuccess: "Setările au fost restaurate",
- language:"Română",
- informationText: "Informații",
- informationsContentText: "Acest script evidențiază cuvintele cheie din chatul jocului și te notifică printr-un sunet! <br> Îl poți folosi, de exemplu, pentru porecla ta din joc sau pentru cumpărarea și vânzarea de obiecte!",
- languageText: "Limbă",
- contactText: "Contact",
- contactInfosText: "Îmi poți trimite un mesaj privat (scrie la Annienta Montagne) pe world 1 din the-west: it1.the-west.it",
- donationText: "Ajută-mă să continui dezvoltarea cu o mică donație!",
- versionText: "Versiune"
- },
- sk: {
- saveSettings: "Uložiť nastavenia",
- resetDefaults: "Obnoviť predvolené",
- keywordsTitle: "Aktívne kľúčové slová:",
- enableSound: "Povoliť zvuk",
- checkInterval: "Interval kontroly",
- volume: "Hlasitosť",
- highlightBgColor: "Zvýraznená farba pozadia:",
- highlightTextColor: "Zvýraznená farba textu:",
- selectLanguage: "Vybrať jazyk",
- settingsSavedSuccess: "Nastavenia boli úspešne uložené!",
- settingsDefaultSuccess: "Nastavenia boli obnovené",
- language:"Slovenčina",
- informationText: "Informácie",
- informationsContentText: "Tento skript zvýrazňuje kľúčové slová v hernom chate a upozorňuje ťa zvukom! <br> Môžeš ho použiť napríklad pre svoju prezývku v hre alebo na nákup a predaj predmetov!",
- languageText: "Jazyk",
- contactText: "Kontakt",
- contactInfosText: "Môžeš mi poslať súkromnú správu (napíš Annienta Montagne) na svete 1 v the-west: it1.the-west.it",
- donationText: "Pomôž mi pokračovať vo vývoji malým príspevkom!",
- versionText: "Verzia"
- },
- tr: {
- saveSettings: "Ayarları Kaydet",
- resetDefaults: "Varsayılanları Sıfırla",
- keywordsTitle: "Aktif Anahtar Kelimeler:",
- enableSound: "Sesi Etkinleştir",
- checkInterval: "Kontrol Aralığı",
- volume: "Ses",
- highlightBgColor: "Vurgulanan Arka Plan Rengi:",
- highlightTextColor: "Vurgulanan Metin Rengi:",
- selectLanguage: "Dil Seçin",
- settingsSavedSuccess: "Ayarlar başarıyla kaydedildi!",
- settingsDefaultSuccess: "Ayarlar geri yüklendi",
- language:"Türkçe",
- informationText: "Bilgi",
- informationsContentText: "Bu komut dosyası, oyun sohbetinde anahtar kelimeleri vurgular ve sizi bir ses ile uyarır! <br> Örneğin, oyun içi takma adınız veya eşya alım satımı için kullanabilirsiniz!",
- languageText: "Dil",
- contactText: "İletişim",
- contactInfosText: "Bana özel mesaj gönderebilirsiniz (Annienta Montagne yazın) world 1 of the-west: it1.the-west.it",
- donationText: "Geliştirmeye devam etmem için küçük bir bağış yap!",
- versionText: "Sürüm"
- }
- };
-
-
-
- const TWCA = {
- name: "The-West Chat Alert",
- versionShort: "2.0",
- versionLong: "1.25.3.20.2338",
- author: "qtMety (aka Annienta Montagne, the-west.it w1)",
- website: "",
- language: languageStorage
- }
-
- var TWCA_api = TheWestApi.register('TWCA', TWCA.name, TWCA.versionShort, Game.version.toString(), TWCA.author);
- var TWCAT = translations[TWCA.language]
- var TWCA_versionInfo = '<b>'+TWCAT.versionText+': </b><i>'+TWCA.name+' '+TWCA.versionLong+'</i><br>'
- var TWCA_registerTitle = '<b><h1>'+TWCAT.informationText+'</h1></b>'+TWCA_versionInfo+'<b>'+TWCAT.languageText+': </b><i>'+TWCAT.language+'</i><br>';
- var TWCA_registerInformation = TWCAT.informationsContentText+'<br>'
- var TWCA_registerContact = '<br><h1><b>'+TWCAT.contactText+'</b></h1>'+TWCAT.contactInfosText+'<br>'
- var TWCA_donationText = '<b>'+TWCAT.donationText+'</b>'
- var TWCA_donationImg = '<h3>'+TWCA_donationText+'</h3><div style="text-align: left;"><a href="https://ko-fi.com/qtmety" target="_blank"><img src="http://inurse.app/imgs/buyMeACoffee.webp" alt="Kofi Donation" width="100"></a><a href="https://ko-fi.com/qtmety" target="_blank"><img src="http://inurse.app/imgs/paypalDonations.webp" alt="Kofi Donations" width="100"></a></div>'
- var TWCA_registerContent = '<br>';
- TWCA_api.setGui(TWCA_registerTitle+''+TWCA_registerInformation+''+TWCA_registerContact+''+TWCA_donationImg+''+TWCA_registerContent);
-
-
- var B = 0;
-
- alertSound.volume = 0.8;
-
- function checkChat() {
- let messages = document.querySelectorAll(".chat_text");
- messages.forEach((td, index) => {
- let text = td.innerText.trim().toLowerCase();
- let messageId = `${index}_${text}`;
-
- let foundKeyword = settings.keywords.find(keyword => {
- let regex = new RegExp(`\\b${keyword}\\b`, "gi");
- return regex.test(text);
- });
-
- if (foundKeyword && !seenMessages.has(messageId)) {
- seenMessages.add(messageId);
-
- if (settings.enableSound && alertSound.paused) {
- alertSound.volume = settings.volume; // Assicura che il volume sia aggiornato prima di riprodurre
- alertSound.play().catch(() => {});
- }
-
- td.style.backgroundColor = settings.highlightBgColor;
- td.style.color = settings.highlightTextColor;
- td.style.fontWeight = "bold";
- td.style.padding = "5px";
- td.style.borderRadius = "5px";
- }
- });
- }
-
- setTimeout(() => {
- chatCheckInterval = setInterval(checkChat, settings.checkInterval);
- }, 3000);
-
- function saveSettings() {
- localStorage.setItem("TWCAchatKeywordAlertSettings", JSON.stringify(settings));
- }
-
- function openSettingsWindow() {
- let win = wman.open("chatAlertWindow", "TW Chat Alert", "noreload");
- if (!win) return;
-
- win.setSize(700, 450).setMiniTitle("Chat Alert");
- // Aggiunge dinamicamente lo stile per lo slider
- let style = document.createElement('style');
- style.innerHTML = `
- .slidecontainer {
- width: 100%;
- }
-
- .slider {
- -webkit-appearance: none;
- width: 100%;
- height: 10px;
- border-radius: 5px;
- background: url('https://westit.innogamescdn.com/images/interface/dock.png') repeat-x;
- background-size: 100% 100%;
- outline: none;
- opacity: 0.7;
- -webkit-transition: .2s;
- transition: opacity .2s;
- }
-
- .slider:hover {
- opacity: 1;
- }
-
- .slider::-webkit-slider-thumb {
- -webkit-appearance: none;
- appearance: none;
- width: 35px;
- height: 28px;
- border: 0;
- background: url('https://www.inurse.app/imgs/twoGuns.gif');
- cursor: pointer;
- }
-
- .slider::-moz-range-thumb {
- width: 23px;
- height: 24px;
- border: 0;
- background: url('https://www.inurse.app/imgs/twoGuns.gif');
- cursor: pointer;
- }
-
-
- /* Stile generale del menu a tendina */
- .dropdown {
- position: relative;
- display: inline-block;
- }
-
- .dropdown-btn {
- background-color: #e4c8a2;
- color: black;
- padding: 5px 10px;
- border: none;
- cursor: pointer;
- font-size: 14px;
- display: flex;
- align-items: center;
- justify-content: space-between;
- width: 125px;
- }
-
- .dropdown-btn:hover {
- background-color: #e4c59b;
- }
-
- .dropdown-content {
- display: none;
- position: absolute;
- background-color: white;
- min-width: 220px;
- box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2);
- z-index: 1000;
- max-height: 250px;
- overflow-y: auto;
- border: 1px solid #ccc;
- padding: 5px;
- }
-
- .show {
- display: block;
- }
-
- #flagDropdown {
- display: flex;
- align-items: center; /* Allinea verticalmente */
- justify-content: space-between; /* Spazia gli elementi */
- width: auto; /* Adatta la larghezza */
- }
-
- `;
- document.head.appendChild(style);
-
-
- let content = $(`
- <div class="tw2gui_groupframe_content_pane">
- <p><b id="keywordTitle">${TWCAT.keywordsTitle}</b></p>
- <textarea id="keywordList" style="width: 95%; height: 100px;"></textarea>
- <ul style="list-style-type: none;">
- <li style="margin: 5px 0;">
- <div id="enableSoundDiv" class="tw2gui_checkbox undefined tw2gui_checkbox_labeled hasMousePopup">
- ${TWCAT.enableSound}
- </div>
- </li>
- <li style="margin: 5px 0;">
- <span class="tw2gui_textfield_wrapper">
- <span id="checkIntervalLabel" class="tw2gui_textfield_label">${TWCAT.checkInterval}</span>
- <span class="tw2gui_textfield">
- <span><input type="number" id="checkInterval" min="5" max="60" step="1" style="width: 80px;"></span>
- </span>
- </span>
- </li>
- </ul>
- <p>
- <label id="highlightBgColorLabel" for="highlightBgColor">${TWCAT.highlightBgColor}:</label>
- <input class="tw2gui_textfield" type="color" id="highlightBgColor" value="${settings.highlightBgColor || '#000000'}">
- </p>
- <p>
- <label id="highlightTextColorLabel" for="highlightTextColor">${TWCAT.highlightTextColor}:</label>
- <input class="tw2gui_textfield" type="color" id="highlightTextColor" value="${settings.highlightTextColor || '#FFFFFF'}">
- </p>
- <p>
- <label id="volumeLabel" for="volumeControl">${TWCAT.volume}:</label>
- <input type="range" id="volumeControl" min="0" max="1" step="0.1" class="slider" style="width: 80%;">
- <span id="volumeValue"></span>
- </p>
- </div>
-
-
- <div class="tw2gui_groupframe ">
-
- <div class="tw2gui_groupframe_background bg0"></div>
- <div class="tw2gui_groupframe_background bg1"></div>
- <div class="tw2gui_groupframe_background bg2"></div>
- <div class="tw2gui_groupframe_background bg3"></div>
- <div class="tw2gui_groupframe_background bg4"></div>
- <div class="tw2gui_groupframe_frame tw2gui_bg_tl"></div>
- <div class="tw2gui_groupframe_frame tw2gui_bg_tr"></div>
- <div class="tw2gui_groupframe_frame tw2gui_bg_bl"></div>
- <div class="tw2gui_groupframe_frame tw2gui_bg_br"></div>
-
- <div class="tw2gui_groupframe_content_pane" style="display: flex; justify-content: space-between; align-items: center;">
-
- <div class="tw2gui_button">
- <div class="tw2gui_button_right_cap"></div>
- <div class="tw2gui_button_left_cap"></div>
- <div class="tw2gui_button_middle_bg"></div>
- <div id="cancelSettings" class="textart_title">${TWCAT.resetDefaults}</div>
- </div>
-
- <div id="flagDropdown"></div>
-
-
- <div class="tw2gui_button">
- <div class="tw2gui_button_right_cap"></div>
- <div class="tw2gui_button_left_cap"></div>
- <div class="tw2gui_button_middle_bg"></div>
- <div id="saveSettings" class="textart_title">${TWCAT.saveSettings}</div>
- </div>
-
- </div>
-
-
- </div>
- </div>
-
-
-
- </div>
- `);
-
- win.appendToContentPane(content);
- setTimeout(initDropdown, 10);
-
-
- // Imposta lo stato iniziale del checkbox div
- if (settings.enableSound) {
- $("#enableSoundDiv").addClass("tw2gui_checkbox_checked");
- } else {
- $("#enableSoundDiv").removeClass("tw2gui_checkbox_checked");
- }
-
- // Carica le impostazioni salvate
- $("#keywordList").val(settings.keywords.join("\n"));
- //$("#enableSound").prop("checked", settings.enableSound);
- $("#volumeControl").val(settings.volume || 0.8);
- $("#volumeValue").text((settings.volume || 0.8) * 100 + "%");
- alertSound.volume = settings.volume || 0.8; // Imposta il volume quando la finestra si apre
- $("#checkInterval").val((settings.checkInterval || 15000) / 1000);
-
- // Aggiornamento visualizzazione volume
- $("#volumeControl").on("input", function() {
- $("#volumeValue").text($(this).val() * 100 + "%");
- });
-
- // Gestisce il click sul checkbox div
- $("#enableSoundDiv").on("click", function() {
- $(this).toggleClass("tw2gui_checkbox_checked");
- settings.enableSound = $(this).hasClass("tw2gui_checkbox_checked");
- });
-
- $("#cancelSettings").on("click", function() {
- settings = {
- keywords: [
- "word", "two words", "three words boh", "another keyword", "ward",
- "wod", "wor",
- ],
- checkInterval: 15000,
- enableSound: true,
- volume: 0.8,
- highlightBgColor: "#000000", //Reset sfondo nero
- highlightTextColor: "#FFFFFF" // Reset testo bianco
- };
-
- $("#keywordList").val(settings.keywords.join("\n"));
- $("#enableSoundDiv").addClass("tw2gui_checkbox_checked");
- $("#volumeControl").val(settings.volume);
- $("#volumeValue").text(settings.volume * 100 + "%");
- $("#checkInterval").val(settings.checkInterval / 1000);
- $("#highlightBgColor").val(settings.highlightBgColor);
- $("#highlightTextColor").val(settings.highlightTextColor);
-
- alertSound.volume = settings.volume; //Aggiorna il volume immediatamente
- saveSettings();
- //Annulla il vecchio setInterval e avvia il nuovo con il nuovo valore
- clearInterval(chatCheckInterval);
- chatCheckInterval = setInterval(checkChat, settings.checkInterval);
- new UserMessage(''+TWCAT.settingsDefaultSuccess+'', 'success').show();
- });
-
- // Salvataggio delle impostazioni
- $("#saveSettings").on("click", function() {
- settings.keywords = $("#keywordList").val().split("\n").map(k => k.trim()).filter(k => k);
- settings.enableSound = $("#enableSoundDiv").hasClass("tw2gui_checkbox_checked");
- settings.volume = parseFloat($("#volumeControl").val());
- settings.checkInterval = parseInt($("#checkInterval").val()) * 1000;
- settings.highlightBgColor = $("#highlightBgColor").val();
- settings.highlightTextColor = $("#highlightTextColor").val();
-
- alertSound.volume = settings.volume; // Aggiorna il volume immediatamente
- saveSettings();
- //Annulla il vecchio setInterval e avvia il nuovo con il nuovo valore
- clearInterval(chatCheckInterval);
- chatCheckInterval = setInterval(checkChat, settings.checkInterval);
- new UserMessage(''+TWCAT.settingsSavedSuccess+'', 'success').show();
- });
- }
-
- function applyTranslations(language) {
- if (!translations[language]) language = "en"; // Se manca, usa l'italiano di default
-
- document.getElementById("saveSettings").textContent = translations[language].saveSettings;
- document.getElementById("cancelSettings").textContent = translations[language].resetDefaults;
- document.getElementById("keywordTitle").textContent = translations[language].keywordsTitle;
- document.getElementById("enableSoundDiv").textContent = translations[language].enableSound;
- document.getElementById("checkIntervalLabel").textContent = translations[language].checkInterval;
- document.getElementById("volumeLabel").textContent = translations[language].volume;
- document.getElementById("highlightBgColorLabel").textContent = translations[language].highlightBgColor;
- document.getElementById("highlightTextColorLabel").textContent = translations[language].highlightTextColor;
- document.getElementById("dropdown-btn").textContent = translations[language].selectLanguage;
- }
-
-
-
- function initDropdown() {
-
- // Aspettiamo che il sistema west.gui sia disponibile
- if (typeof west === "undefined" || typeof west.gui === "undefined") {
- console.error("west.gui non è definito. Riprovo...");
- setTimeout(initDropdown, 500);
- return;
- }
-
- //Definizione delle lingue e posizione delle bandiere
- var languages = {
- br: { lang: "Português (pt-br)", bg_pos: "0px -1008px", locale: "pt_BR" },
- cs: { lang: "Čeština (cs)", bg_pos: "0px -784px", locale: "cs_CZ" },
- de: { lang: "Deutsch (de)", bg_pos: "0px -1103px", locale: "de_DE" },
- el: { lang: "Ελληνικά (el)", bg_pos: "0px -752px", locale: "el_GR" },
- en: { lang: "English (en)", bg_pos: "0px -1488px", locale: "en_EN" },
- es: { lang: "Español (es)", bg_pos: "0px -1392px", locale: "es_ES" },
- fr: { lang: "Français (fr)", bg_pos: "0px -1360px", locale: "fr_FR" },
- hu: { lang: "Magyar (hu)", bg_pos: "0px -1136px", locale: "hu_HU" },
- it: { lang: "Italiano (it)", bg_pos: "0px -1296px", locale: "it_IT" },
- nl: { lang: "Dutch (nl)", bg_pos: "0px -687px", locale: "nl_NL" },
- pl: { lang: "Polski (pl)", bg_pos: "0px -1616px", locale: "pl_PL" },
- pt: { lang: "Português (pt)", bg_pos: "0px -848px", locale: "pt_PT" },
- ro: { lang: "Română (ro)", bg_pos: "0px -976px", locale: "ro_RO" },
- sk: { lang: "Slovenčina (sk)", bg_pos: "0px -815px", locale: "sk_SK" },
- tr: { lang: "Türkçe (tr)", bg_pos: "0px -1328px", locale: "tr_TR" }
- };
-
- const flagDropdown = document.getElementById("flagDropdown");
-
- if (!flagDropdown) {
- console.error(" Elemento flagDropdown non trovato!");
- return;
- }
-
- var langCombo = new west.gui.Combobox();
- langCombo.setWidth(180);
-
- Object.entries(languages)
- .sort((a, b) => a[1].lang.localeCompare(b[1].lang))
- .forEach(([key, value]) => {
- langCombo.addItem(
- key,
- `<span style="background: url(//portal-bar.innogamescdn.com/images/west-sprite_01.newRuFlag.1661155041.png) no-repeat left center; background-position: ${value.bg_pos}; padding-left: 30px;">${value.lang}</span>`
- );
- });
-
- // Seleziona la lingua attuale
- const savedLanguage = localStorage.getItem("TWCALanguage") || "en";
- langCombo.select(savedLanguage);
-
- // Listener per il cambio lingua
- langCombo.addListener(function(selectedKey) {
- localStorage.setItem("TWCALanguage", selectedKey);
- applyTranslations(selectedKey); // Applica la traduzione immediatamente
- });
-
- // Inserisce il combobox direttamente nel flagDropdown
- $(flagDropdown).empty().append(langCombo.getMainDiv());
- }
-
-
- function addSettingsButton() {
- let menuContainer = document.querySelector("#ui_menubar");
- if (!menuContainer) return;
-
- // Crea il contenitore per il pulsante
- let menuDiv = document.createElement("div");
- menuDiv.className = "ui_menucontainer";
- menuDiv.style.marginBottom = "7px";
-
- let settingsButton = document.createElement("div");
- settingsButton.id = "chatAlertMenuButton";
- settingsButton.className = "menulink hasMousePopup";
- settingsButton.style.backgroundImage = "url(http://inurse.app/imgs/voiceMessageIcon.webp)";
- settingsButton.style.backgroundSize = "contain"; // Adatta l'immagine alla dimensione del pulsante
- settingsButton.style.backgroundRepeat = "no-repeat";
- settingsButton.style.backgroundPosition = "0px 0px";
- settingsButton.style.width = "26px";
- settingsButton.style.height = "26px";
- settingsButton.style.cursor = "pointer";
-
- settingsButton.title = "Impostazioni Chat Alert";
- settingsButton.addEventListener("click", openSettingsWindow);
-
- // Effetto hover
- settingsButton.addEventListener("mouseenter", () => {
- settingsButton.style.backgroundPosition = "0px 0px";
- });
- settingsButton.addEventListener("mouseleave", () => {
- settingsButton.style.backgroundPosition = "0px 0px";
- });
-
- let bottomDiv = document.createElement("div");
- bottomDiv.className = "menucontainer_bottom";
-
- menuDiv.appendChild(settingsButton);
- menuDiv.appendChild(bottomDiv);
-
- menuContainer.appendChild(menuDiv);
- }
-
- setTimeout(addSettingsButton, 1000);
-
- })();