Añade un botón “Subir imagen” junto a “Save” para cargar tu skin limpia y usar el borde Bite VIP (negro, blanco, etc.)
// ==UserScript==
// @name Agar.io Skin Uploader (Bite VIP)
// @namespace http://tampermonkey.net/
// @version 1.0
// @description Añade un botón “Subir imagen” junto a “Save” para cargar tu skin limpia y usar el borde Bite VIP (negro, blanco, etc.)
// @author ChatGPT (profesional)
// @match *://agar.io/*
// @grant none
// @license MIT
// ==/UserScript==
(function() {
'use strict';
/**
* Espera hasta que el editor de skins (canvas, colores y botón Save) esté disponible,
* luego inyecta el botón de subida de imagen.
*/
function waitForEditor() {
const canvas = document.getElementById('skin-editor-canvas');
const saveBtn = document.querySelector('.btn-save');
const colorPanel = document.querySelector('.skin-border-option');
if (canvas && saveBtn && colorPanel && !document.getElementById('tm-upload-btn')) {
injectUploadButton(saveBtn);
}
}
/**
* Crea e inserta el input[type=file] junto al botón Save, con un pequeño margen.
* @param {HTMLElement} saveBtn - El botón “Save” del editor.
*/
function injectUploadButton(saveBtn) {
// Crear el input de archivo
const uploadInput = document.createElement('input');
uploadInput.type = 'file';
uploadInput.accept = 'image/*';
uploadInput.id = 'tm-upload-btn';
uploadInput.title = 'Subir imagen para skin';
uploadInput.style.marginLeft = '8px';
uploadInput.style.verticalAlign = 'middle';
uploadInput.style.cursor = 'pointer';
// Evento al seleccionar un archivo
uploadInput.addEventListener('change', event => {
const file = event.target.files[0];
if (!file) return;
loadImageToCanvas(file);
});
// Insertar después del botón Save
saveBtn.parentNode.insertBefore(uploadInput, saveBtn.nextSibling);
}
/**
* Lee el archivo como DataURL y dibuja la imagen en el canvas oficial.
* @param {File} file - El archivo de imagen seleccionado.
*/
function loadImageToCanvas(file) {
const reader = new FileReader();
reader.onload = () => {
const img = new Image();
img.onload = () => {
const canvas = document.getElementById('skin-editor-canvas');
const ctx = canvas.getContext('2d');
// Ajustar tamaño
canvas.width = 512;
canvas.height = 512;
// Limpiar cualquier contenido previo
ctx.clearRect(0, 0, canvas.width, canvas.height);
// Dibujar imagen limpia
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
// Ahora solo falta pulsar “Save” para que Bite VIP aplique el borde elegido
};
img.src = reader.result;
};
reader.readAsDataURL(file);
}
// Comprobar cada segundo hasta que el editor esté listo
setInterval(waitForEditor, 1000);
})();