您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a Games button to Blacket/Triangulet
// ==UserScript== // @name Blacket/Triangulet Game Modal Opener // @version 2.5.0 // @description Adds a Games button to Blacket/Triangulet // @match https://blacket.org/* // @match https://tri.pengpowers.xyz/* // @match https://coplic.com/* // @grant none // @namespace https://greasyfork.org/users/1479014 // ==/UserScript== (function () { 'use strict'; // Insert games panel function addGamesPanel() { const infoPanel = document.querySelector('.styles__infoContainer___2uI-S-camelCase'); if (!infoPanel || document.querySelector('#gamesPanel')) return; const clone = infoPanel.cloneNode(false); clone.id = 'gamesPanel'; // Header row const headerRow = document.createElement('div'); headerRow.className = 'styles__headerRow___1tdPa-camelCase'; headerRow.style.display = 'flex'; headerRow.style.alignItems = 'center'; const icon = document.createElement('i'); icon.className = 'fas fa-gamepad styles__headerIcon___1ykdN-camelCase'; icon.setAttribute('aria-hidden', 'true'); icon.style.marginRight = '0.5vw'; const headerText = document.createElement('div'); headerText.className = 'styles__infoHeader___1lsZY-camelCase'; headerText.textContent = 'Games'; headerRow.appendChild(icon); headerRow.appendChild(headerText); clone.appendChild(headerRow); // Styled button like "Upgrade Now!" const buttonWrapper = document.createElement('div'); buttonWrapper.className = 'styles__button___1_E-G-camelCase styles__upgradeButton___3UQMv-camelCase'; buttonWrapper.setAttribute('role', 'button'); buttonWrapper.setAttribute('tabindex', '0'); buttonWrapper.style.cursor = 'pointer'; buttonWrapper.onclick = createGamesModal; const buttonLink = document.createElement('a'); buttonLink.href = '#'; buttonLink.style.textDecoration = 'none'; const shadow = document.createElement('div'); shadow.className = 'styles__shadow___3GMdH-camelCase'; const edge = document.createElement('div'); edge.className = 'styles__edge___3eWfq-camelCase'; edge.style.backgroundColor = 'var(--secondary)'; const front = document.createElement('div'); front.className = 'styles__front___vcvuy-camelCase styles__upgradeButtonInside___396BT-camelCase'; front.style.backgroundColor = 'var(--secondary)'; front.textContent = 'Games'; buttonLink.appendChild(shadow); buttonLink.appendChild(edge); buttonLink.appendChild(front); buttonWrapper.appendChild(buttonLink); clone.appendChild(buttonWrapper); infoPanel.parentNode.insertBefore(clone, infoPanel.nextSibling); } // Modal logic function createGamesModal() { if (document.getElementById('bigModal')) return; const backdrop = document.createElement('div'); backdrop.id = 'modalBackdrop'; Object.assign(backdrop.style, { position: 'fixed', top: 0, left: 0, width: '100vw', height: '100vh', backgroundColor: 'rgba(0, 0, 0, 0.5)', zIndex: 2147483645, }); document.body.appendChild(backdrop); const modal = document.createElement('div'); modal.id = 'bigModal'; modal.className = 'bb_bigModal'; Object.assign(modal.style, { position: 'fixed', top: '50%', left: '50%', transform: 'translate(-50%, -50%)', backgroundColor: '#1a1a1a', color: 'white', padding: '1.5rem', borderRadius: '8px', zIndex: 2147483646, maxWidth: '90vw', maxHeight: '80vh', overflowY: 'auto', boxShadow: '0 0 10px black', fontFamily: '"Nunito", sans-serif', userSelect: 'none', }); const title = document.createElement('div'); title.className = 'bb_bigModalTitle'; title.textContent = 'Games'; title.style.fontSize = '1.6rem'; title.style.fontWeight = 'bold'; title.style.marginBottom = '0.5rem'; modal.appendChild(title); const desc = document.createElement('div'); desc.className = 'bb_bigModalDescription'; desc.textContent = 'Choose a game to play:'; desc.style.marginBottom = '1rem'; modal.appendChild(desc); const games = [ ['Play Chrome Dino Game', 'https://chromedino.com/'], ["Play Five Nights at Penguin's", 'https://fnap2tuff.glitch.me'], ['Play Slope', 'slope'], ['Play Minecraft Classic', 'https://classic.minecraft.net/'], ['Play Eaglercraft', 'https://eaglercraft.com'], ]; for (const [text, url] of games) { const link = document.createElement('a'); link.href = '#'; link.textContent = text; link.style.display = 'block'; link.style.color = '#6cf'; link.style.margin = '0.5rem 0'; link.onclick = (e) => { e.preventDefault(); closeModal(); if (url === 'slope') return launchSlopeGame(); launchIframeGame(url); }; modal.appendChild(link); } modal.appendChild(document.createElement('hr')); const closeBtn = document.createElement('div'); closeBtn.className = 'styles__button___1_E-G-camelCase styles__button___3zpwV-camelCase'; closeBtn.setAttribute('role', 'button'); closeBtn.setAttribute('tabindex', '0'); closeBtn.style.width = '30%'; closeBtn.style.marginBottom = '1.5vh'; closeBtn.style.cursor = 'pointer'; const shadowDiv = document.createElement('div'); shadowDiv.className = 'styles__shadow___3GMdH-camelCase'; closeBtn.appendChild(shadowDiv); const edgeDiv = document.createElement('div'); edgeDiv.className = 'styles__edge___3eWfq-camelCase'; edgeDiv.style.backgroundColor = '#2f2f2f'; closeBtn.appendChild(edgeDiv); const frontDiv = document.createElement('div'); frontDiv.className = 'styles__front___vcvuy-camelCase styles__buttonInside___39vdp-camelCase'; frontDiv.style.backgroundColor = '#2f2f2f'; frontDiv.textContent = 'Close'; closeBtn.appendChild(frontDiv); closeBtn.onclick = closeModal; modal.appendChild(closeBtn); document.body.appendChild(modal); } function closeModal() { const modal = document.getElementById('bigModal'); const backdrop = document.getElementById('modalBackdrop'); if (modal) modal.remove(); if (backdrop) backdrop.remove(); } function launchIframeGame(url) { document.body.innerHTML = ''; const iframe = document.createElement('iframe'); Object.assign(iframe.style, { position: 'fixed', top: 0, left: 0, width: '100vw', height: '100vh', border: 'none', zIndex: '9999' }); iframe.src = url; document.body.appendChild(iframe); setTimeout(createOverlayX, 300); } function launchSlopeGame() { document.body.innerHTML = ''; const canvas = document.createElement('canvas'); canvas.id = 'slopeCanvas'; Object.assign(canvas.style, { position: 'fixed', top: 0, left: 0, width: '100vw', height: '100vh', display: 'block', zIndex: '9999' }); document.body.appendChild(canvas); const slopeScript = document.createElement('script'); slopeScript.src = 'https://cdn.jsdelivr.net/gh/iygiyfg/assets/slope.js'; document.body.appendChild(slopeScript); setTimeout(createOverlayX, 500); } function createOverlayX() { if (document.getElementById('x-overlay')) return; const font = document.createElement('link'); font.href = 'https://fonts.googleapis.com/css2?family=Titan+One&display=swap'; font.rel = 'stylesheet'; document.head.appendChild(font); const overlay = document.createElement('div'); overlay.id = 'x-overlay'; Object.assign(overlay.style, { position: 'fixed', top: '0', left: '0', width: '100vw', height: '100vh', zIndex: '2147483647', pointerEvents: 'none' }); const x = document.createElement('div'); x.textContent = 'X'; x.id = 'x'; Object.assign(x.style, { position: 'absolute', top: '1vw', right: '1vw', fontSize: '2.5vw', color: 'red', fontFamily: '"Titan One", cursive', cursor: 'pointer', pointerEvents: 'auto' }); x.onclick = () => location.reload(); overlay.appendChild(x); document.body.appendChild(overlay); } // Wait for info panel to exist const observer = new MutationObserver(() => { if (document.querySelector('.styles__infoContainer___2uI-S-camelCase')) { observer.disconnect(); addGamesPanel(); } }); observer.observe(document.body, { childList: true, subtree: true }); })();