您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Try to take over the world!
// ==UserScript== // @name CyberPowerPC WPlace Overlay // @namespace http://tampermonkey.net/ // @version 2025-08-09 // @description Try to take over the world! // @author You // @match *://*.wplace.live/* // @icon https://cpukbot.co.uk/favicon.ico // @grant none // ==/UserScript== (function() { 'use strict'; function applyBlueprint(tileBlob, blueprintImage) { const canvas = document.createElement("canvas"); const ctx = canvas.getContext("2d"); const tile = new Image(); const blueprint = new Image(); tile.src = URL.createObjectURL(tileBlob); blueprint.crossOrigin = "Anonymous"; blueprint.src = blueprintImage; const scale = 3; // minimal upscale const dotSize = 1; // in scaled pixels return new Promise((resolve) => { tile.onload = () => { canvas.width = tile.width * scale; canvas.height = tile.height * scale; ctx.imageSmoothingEnabled = false; ctx.drawImage(tile, 0, 0, canvas.width, canvas.height); blueprint.onload = () => { const tempCanvas = document.createElement("canvas"); tempCanvas.width = blueprint.width; tempCanvas.height = blueprint.height; const tempCtx = tempCanvas.getContext("2d"); tempCtx.drawImage(blueprint, 0, 0); const imageData = tempCtx.getImageData( 0, 0, blueprint.width, blueprint.height ).data; for (let y = 0; y < blueprint.height; y++) { for (let x = 0; x < blueprint.width; x++) { const i = (y * blueprint.width + x) * 4; const r = imageData[i]; const g = imageData[i + 1]; const b = imageData[i + 2]; const a = imageData[i + 3] / 255; if (a > 0) { ctx.fillStyle = `rgba(${r},${g},${b},${a})`; ctx.fillRect( x * scale + (scale - dotSize) / 2, y * scale + (scale - dotSize) / 2, dotSize, dotSize ); } } } resolve(canvas.toDataURL("image/png")); console.log(canvas.toDataURL("image/png")); }; }; }); } // Your code here... console.log("=== CyberPowerPC WPlace Overlay script loaded ==="); const originalFetch = window.fetch; window.fetch = async (...args) => { const { url } = args[0]; // console.log("Fetch called with URL:", url, "and options:", options); const res = await originalFetch.apply(this, args); if (typeof url === 'string' && url.includes('/tiles/') && url.endsWith('1014/648.png')) { const clonedResponse = res.clone(); // Clone response, as it can only be read once const blob = await clonedResponse.blob(); const dataUrl = await applyBlueprint(blob, "https://cpukbot.co.uk/wplace.png"); const newResponse = new Response(await (await fetch(dataUrl)).blob(), { headers: { 'Content-Type': 'image/png' } }); console.log("Response: ", clonedResponse); return newResponse; } return res; } })();