您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Drawing Art Prompt-to-Picture: On!
// ==UserScript== // @name Drawaria Art Prompt-to-Picture: On! // @namespace http://tampermonkey.net/ // @version 1.0 // @license MIT // @description Drawing Art Prompt-to-Picture: On! // @author YouTubeDrawaria // @match https://drawaria.online/* // @icon https://www.google.com/s2/favicons?sz=64&domain=drawaria.online // @grant none // ==/UserScript== (function() { 'use strict'; // (function() { /* // 'use strict'; // Function to get the user's language function getUserLanguage() { const navigatorLanguage = navigator.language || navigator.userLanguage; return navigatorLanguage.split('-')[0]; // Get the primary language code } // Translations for the warning message and character's speech const translations = { en: { title: 'Everything is blocked', message: 'You should not play right now, you have important things to do.', characterSpeech: 'Hey! Go outside.' }, es: { title: 'Todo está bloqueado', message: 'No debes jugar en este momento, tienes cosas importantes que hacer ahora mismo.', characterSpeech: '¡Oye! Sal afuera.' }, fr: { title: 'Tout est bloqué', message: 'Vous ne devriez pas jouer en ce moment, vous avez des choses importantes à faire.', characterSpeech: 'Hé ! Sors dehors.' }, de: { title: 'Alles ist blockiert', message: 'Du solltest im Moment nicht spielen, du hast wichtige Dinge zu tun.', characterSpeech: 'Hey! Geh nach draußen.' }, it: { title: 'Tutto è bloccato', message: 'Non dovresti giocare in questo momento, hai cose importanti da fare.', characterSpeech: 'Ehi! Esci fuori.' }, pt: { title: 'Tudo está bloqueado', message: 'Você não deveria jogar agora, você tem coisas importantes para fazer.', characterSpeech: 'Ei! Vá para fora.' }, ru: { title: 'Все заблокировано', message: 'Вы не должны играть сейчас, у вас есть важные дела.', characterSpeech: 'Эй! Иди на улицу.' }, ja: { title: 'すべてブロックされています', message: '今はプレイすべきではありません。重要なことがあります。', characterSpeech: 'ねえ!外に出ようよ。' }, zh: { title: '一切都被阻止了', message: '您现在不应该玩,您有重要的事情要做。', characterSpeech: '嘿!出去外面。' }, // Add more languages as needed }; //* // Estilos CSS para la opción de simetría const symmetryStyle = ` #option-symmetry { display: flex; flex-direction: column; margin-bottom: 1em; } #option-symmetry > div { margin-bottom: 0.5em; } #option-symmetry > select { pointer-events: auto; display: block; position: relative; z-index: 1000; } `; // Inyectar los estilos CSS en la página const styleSheet = document.createElement("style"); styleSheet.type = "text/css"; styleSheet.innerText = symmetryStyle; document.head.appendChild(styleSheet); // Función para agregar la opción de simetría function addSymmetryOption() { // Verificar si el elemento de simetría ya existe if (document.querySelector('#option-symmetry')) { return; } // Crear el contenedor de la opción de simetría const symmetryContainer = document.createElement('div'); symmetryContainer.className = 'drawcontrols-selectoption'; symmetryContainer.id = 'option-symmetry'; symmetryContainer.innerHTML = ` <div>Simetría:</div> <select class="form-control form-control-sm" data-extprop="2"> <option value="0" class="option-symmetry-common">-</option> <option value="1" class="option-symmetry-common">Espejo horizontal</option> <option value="2" class="option-symmetry-common">Espejo vertical</option> <option value="3" class="option-symmetry-common">Espejo diagonal</option> <option value="102">2 sectores radiales</option> <option value="202">2 sectores radiales + reflejo</option> <option value="103">3 sectores radiales</option> <option value="203">3 sectores radiales + reflejo</option> <option value="104">4 sectores radiales</option> <option value="204">4 sectores radiales + reflejo</option> <option value="105">5 sectores radiales</option> <option value="205">5 sectores radiales + reflejo</option> <option value="106">6 sectores radiales</option> <option value="206">6 sectores radiales + reflejo</option> <option value="107">7 sectores radiales</option> <option value="207">7 sectores radiales + reflejo</option> <option value="108">8 sectores radiales</option> <option value="208">8 sectores radiales + reflejo</option> <option value="109">9 sectores radiales</option> <option value="209">9 sectores radiales + reflejo</option> </select> `; // Agregar el contenedor de simetría al contenedor de opciones de dibujo const drawSettingsContainer = document.querySelector('.drawcontrols-settingscontainer'); if (drawSettingsContainer) { drawSettingsContainer.appendChild(symmetryContainer); } } // Observar cambios en el DOM para agregar la opción de simetría cuando sea necesario const observer = new MutationObserver(addSymmetryOption); observer.observe(document.body, { childList: true, subtree: true }); // Agregar la opción de simetría inicialmente addSymmetryOption(); // Activar los listeners necesarios para la opción de simetría function activateSymmetryListeners() { const symmetrySelect = document.querySelector('#option-symmetry select'); if (symmetrySelect) { symmetrySelect.addEventListener('change', function() { const selectedValue = symmetrySelect.value; // Aquí puedes agregar la lógica para aplicar la simetría seleccionada console.log('Simetría seleccionada:', selectedValue); // Ejemplo: Aplicar la simetría al canvas applySymmetry(selectedValue); }); } } // Función para aplicar la simetría al canvas function applySymmetry(value) { // Aquí puedes agregar la lógica para aplicar la simetría al canvas // Esta es una implementación de ejemplo const canvas = document.querySelector('#canvas'); if (canvas) { const ctx = canvas.getContext('2d'); ctx.save(); switch (value) { case '1': ctx.translate(canvas.width / 2, 0); ctx.scale(-1, 1); break; case '2': ctx.translate(canvas.width / 2, canvas.height / 2); ctx.scale(1, -1); break; case '3': ctx.translate(canvas.width / 2, canvas.height / 2); ctx.rotate(Math.PI / 4); break; // Agregar más casos según sea necesario default: ctx.restore(); break; } ctx.restore(); } } // Activar los listeners inicialmente activateSymmetryListeners(); // Observar cambios en el DOM para activar los listeners cuando sea necesario const listenerObserver = new MutationObserver(activateSymmetryListeners); listenerObserver.observe(document.body, { childList: true, subtree: true }); })();