您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Brush Tool
// ==UserScript== // @name OWOP Brush Tool // @version 1.0 // @namespace none // @author jau // @description Brush Tool // @include https://ourworldofpixels.com/* // @run-at document-end // @grant none // ==/UserScript== var mindr = 1; var maxdr = 10000; var brDiameter = 2; OWOP.tool.addToolObject(new OWOP.tool.class('Brush', OWOP.cursors.brush, OWOP.fx.player.RECT_SELECT_ALIGNED(brDiameter), false, function (tool) { tool.brDiameter = 2; //Declaring variable for brush diameter. var lastX, lastY; document.addEventListener("keydown", rainbowToggle, false); var rainbowPressed = null; function rainbowToggle(e) { /* tab key pressed to toggle rainbow mode */ if (e.keyCode == 9) { rainbowPressed = !rainbowPressed; } } tool.setEvent('mousedown mousemove', function (mouse, event) { var usedButtons = 3; /* Left and right mouse buttons are always used... */ var color = mouse.buttons === 2 ? [255, 255, 255] : OWOP.player.selectedColor; /* White color if right clicking */ switch (OWOP.mouse.buttons) { case 1: case 2: if (!lastX || !lastY) { lastX = OWOP.mouse.tileX; lastY = OWOP.mouse.tileY; } (0, OWOP.util.line)(lastX, lastY, OWOP.mouse.tileX, OWOP.mouse.tileY, 1, function (x, y) { var pixel = OWOP.world.getPixel(x, y); var R = Math.floor(tool.brDiameter / 2); if (pixel !== null) { if (!rainbowPressed && mouse.buttons == 1) { for(var ix = 0; ix < tool.brDiameter; ix++) { for(var iy = 0; iy < tool.brDiameter; iy++) { OWOP.world.setPixel(x + ix - R, y + iy - R, color); } } } else if (rainbowPressed && mouse.buttons == 1) { for(var ix = 0; ix < tool.brDiameter; ix++) { for(var iy = 0; iy < tool.brDiameter; iy++) { OWOP.world.setPixel(x + ix - R, y + iy - R, [(Math.random()*255)|0, (Math.random()*255)|0, (Math.random()*255)|0]); } } } else if (mouse.buttons == 2) { for(var ix = 0; ix < tool.brDiameter; ix++) { for(var iy = 0; iy < tool.brDiameter; iy++) { OWOP.world.setPixel(x + ix - R, y + iy - R, [255,255,255]); } } } }}); lastX = OWOP.mouse.tileX; lastY = OWOP.mouse.tileY; break; case 4: if (event.ctrlKey) { usedButtons |= 4; var color = OWOP.world.getPixel(mouse.tileX, mouse.tileY); if (color) { OWOP.player.selectedColor = color; } } break; } return usedButtons; }); tool.setEvent('mouseup', function (mouse) { lastX = null; lastY = null; }); tool.setFxRenderer(function (fx, ctx, time) { //BAN THONCC var x = fx.extra.player.x; var y = fx.extra.player.y; var diameter = tool.brDiameter var fxx = (Math.floor(x / 16) - Math.floor(diameter / 2) - OWOP.camera.x) * OWOP.camera.zoom; var fxy = (Math.floor(y / 16) - Math.floor(diameter / 2) - OWOP.camera.y) * OWOP.camera.zoom; ctx.globalAlpha = 0.8; ctx.strokeStyle = fx.extra.player.htmlRgb; ctx.strokeRect(fxx, fxy, OWOP.camera.zoom * diameter, OWOP.camera.zoom * diameter); return 1; /* Rendering finished (won't change on next frame) */ }); })); var brDiamWinn = OWOP.windowSys.addWindow(new OWOP.windowSys.class.window('Brush diameter.', {}, function(win) { win.container.title = ' '; win.container.style.height = '16px'; win.container.style.overflow = 'hidden'; var brDiamElmm = OWOP.util.mkHTML('span', { innerHTML: OWOP.tool.allTools.brush.brDiameter }); win.addObj(brDiamElmm); var Rbarr = OWOP.util.mkHTML('input', { type: 'range', style: '-moz-appearance:none;-webkit-appearance:none;appearance:none;height:6px;outline:none;float:right;', min: mindr, max: maxdr, value: OWOP.tool.allTools.brush.brDiameter, oninput: function() { OWOP.tool.allTools.brush.brDiameter = this.value; brDiamElmm.innerHTML = this.value; }, ondblclick:function() { this.value = 1; this.onchange(); } }); win.addObj(Rbarr); }).move(800, 32));