For Mxo New Bot - Library/Depencens
สคริปต์นี้ไม่ควรถูกติดตั้งโดยตรง มันเป็นคลังสำหรับสคริปต์อื่น ๆ เพื่อบรรจุด้วยคำสั่งเมทา // @require https://update.greasyfork.org/scripts/465113/1185072/Mxo%20New%20Bot%20LibrarysDepencens%20-%20Extensions.js
// ==UserScript== // @version 1.0 // @author https://github.com/bababoyy // @license GPLv3 // ==/UserScript== window.onMxobotLoaded = window.onMxobotLoaded || []; window.onMxobotLoaded.push(function () { function filter(tasks) { return tasks.filter( (x) => x.color != window.MxobotWS.BBY_get_pixel(x.x, x.y) && x.color != -1 ); } function PatternExtensionGenerate(pattern) { return function () { Mxobot.Tasker.onTaskAction = function (task) { if (task == undefined) return; let chunkCoord = [ Math.floor(task.x / pattern[0].length) * pattern[0].length, Math.floor(task.y / pattern.length) * pattern.length, ]; let patternCoord = [task.x - chunkCoord[0], task.y - chunkCoord[1]]; let ascii = pattern[patternCoord[1]][patternCoord[0]]; if (ascii == "p") { return false; } else if (ascii == "X") { task.color = Mxobot.getSelectedColor(); } else { task.color = ascii.charCodeAt(0) - "0".charCodeAt(0); } return true; }; }; } var amogus = ["ppppp", "p555p", "5500p", "5555p", "p555p", "p5p5p", "ppppp"]; Mxobot.extensions.push([PatternExtensionGenerate(amogus), "amogus"]); Mxobot.extensions.push([ PatternExtensionGenerate(["L5", "5L"]), "gmod missing texture", ]); Mxobot.extensions.push([ PatternExtensionGenerate(["S", "J", "0", "J", "S"]), "trans", ]); Mxobot.extensions.push([ PatternExtensionGenerate(["D", ">", "<", "8", "Q", "M"]), "lgbt", ]); Mxobot.extensions.push([ PatternExtensionGenerate(["K", "J", "0", "U", "0", "J"]), "femboy", ]); Mxobot.extensions.push([ function () { PatternExtensionGenerate(Mxobot.Menu.pixif)(); }, "Generate pattern by image", ]); Mxobot.extensions.push([ function () { var rectsize = 2; function ontask(task) { return ( task != undefined && (task.y % (rectsize + 1) == 0 || task.x % (rectsize + 1) >= rectsize) ); } Mxobot.Tasker.onTaskAction = ontask; Mxobot.Tasker.onImageTaskReorganize = function (tasks) { return tasks.filter(ontask); }; }, "┼ styled pixelating", ]); Mxobot.extensions.push([ function () { /** * Shuffles array in place. * @param {Array} a items An array containing the items. */ function shuffle(a) { var j, x, i; for (i = a.length - 1; i > 0; i--) { j = Math.floor(Math.random() * (i + 1)); x = a[i]; a[i] = a[j]; a[j] = x; } return a; } Mxobot.Tasker.onImageTaskReorganize = function (tasks) { tasks = shuffle(tasks); tasks = filter(tasks); // change pixelradius from localstorage or keep it as 5 var pixelRadius = localStorage.pixelradius - 0 || 5; var newTasks = Array.from(tasks); var pixels = []; var stucknum = 0; while (newTasks.length != 0) { var found_a_match = false; var task = newTasks.shift(); if (pixels.length == 0) { pixels.push(task); found_a_match = true; } else if (stucknum > newTasks.length) { pixels = [...pixels, task]; found_a_match = true; } else { for (let pixel of pixels) { if ( (task.x - pixel.x) ** 2 + (task.y - pixel.y) ** 2 <= pixelRadius ** 2 ) { pixels.push(task); found_a_match = true; break; } } } if (!found_a_match) { newTasks.push(task); stucknum++; } else { stucknum = 0; } } return pixels; }; }, "circledotting", ]); Mxobot.extensions.push([ function () { function coordinate(x, y, ox, oy) { return [Math.abs(x - ox), Math.abs(y - oy)]; } Mxobot.Tasker.onImageTaskReorganize = function ( tasks, width, height, cx, cy ) { var [originX, originY] = [ Math.floor(width / 2) + cx, Math.floor(height / 2) + cy, ]; tasks.sort( (pixel1, pixel2) => Math.hypot(pixel1.x - originX, pixel1.y - originY) - Math.hypot(pixel2.x - originX, pixel2.y - originY) ); return tasks; }; }, "circlefilling", ]); Mxobot.extensions.push([ function () { var colors = Array.from( document.querySelector("#palette-buttons").children ) .filter((x) => x.className != "disabled") .map((x) => parseInt(x.getAttribute("data-id"))); function ontask(task) { return task; } Mxobot.Tasker.onTaskAction = function (task) { if (task == undefined) return; task.color = colors[Math.floor(Math.random() * colors.length)]; return true; }; Mxobot.Tasker.onImageTaskReorganize = function (tasks) { if (!tasks || tasks.length == 0) { return []; } return tasks.map(function (task) { if (task == undefined) return; task.color = colors[Math.floor(Math.random() * colors.length)]; return task; }); }; }, "war", ]); Mxobot.extensions.push([ function () { var colors = Array.from( document.querySelector("#palette-buttons").children ) .filter((x) => x.className != "disabled") .map((x) => parseInt(x.getAttribute("data-id"))); function ontask(task) { return task; } Mxobot.Tasker.onTaskAction = function (task) { if (task == undefined) return; task.color = colors[Math.floor(Math.random() * colors.length)]; return true; }; Mxobot.Tasker.onImageTaskReorganize = function (tasks) { if (!tasks || tasks.length == 0) { return []; } return tasks.map(function (task) { if (task == undefined) return; task.color = colors[Math.floor(Math.random() * colors.length)]; task.x = tasks[0].x; task.y = tasks[0].y; return task; }); }; }, "war in one pixel", ]); Mxobot.extensions.push([ function () { Mxobot.Tasker.onTaskAction = () => true; Mxobot.Tasker.onImageTaskReorganize = undefined; }, "Normalize Mxobot.Tasker events", ]); var fill_callback; var fill_ran = false; Mxobot.extensions.push([ function () { if (fill_ran == false) { fill_ran = true; interact("#canvas").on("click", function () { if (fill_callback != undefined) { fill_callback(); } }); } let start_coordinate, end_coordinate; if (fill_callback) { fill_callback = undefined; toastr.info("closed fill"); return; } toastr.info("opened fill"); fill_callback = function () { if (start_coordinate) { end_coordinate = Mxobot.getCoordinates(); let color = Mxobot.getSelectedColor(); if (!color && color != 0) { return -1; } for (let y = start_coordinate[1]; y <= end_coordinate[1]; y++) { for (let x = start_coordinate[0]; x <= end_coordinate[0]; x++) { var mvpModeX; if ((y - start_coordinate[1]) % 2 == 0) { mvpModeX = x; } else { mvpModeX = end_coordinate[0] - x + start_coordinate[0]; } Mxobot.Tasker._tasks.push({ // @TODO Mxobot.Tasker x: mvpModeX, y: y, color: color, }); } } Mxobot.Tasker._tasks = Mxobot.prepareTasks(Mxobot.Tasker._tasks) if (Mxobot.Tasker.onImageTaskReorganize) { Mxobot.Tasker._tasks = Mxobot.Tasker.onImageTaskReorganize( Mxobot.Tasker._tasks, end_coordinate[0] - start_coordinate[0], end_coordinate[1] - start_coordinate[1], ...start_coordinate ); } start_coordinate = undefined; } else { start_coordinate = Mxobot.getCoordinates(); } }; }, "fill", ]); Mxobot.extensions.push([ function () { var timeout = prompt( "Your timeout is " + localStorage.timeout + " at the moment. Set timeout to (ms):" ); if (isNaN(parseInt(timeout))) { return; } localStorage.timeout = parseInt(timeout); }, "Set timeout", ]); Mxobot.extensions.push([ function () { var name = prompt("Go to user:"); $($('.messages div a[class="user open-profile"]').get(0)) .attr("data-profile", name) .attr("data-id", name) .click(); }, "Go to user profile", ]); });