Upgrade your game
当前为
// ==UserScript==
// @name Change the contrast and brightness script for Vectaria.io
// @description Upgrade your game
// @version 1.5.2
// @author x_Rediex
// @match *://vectaria.io/*
// @license MIT
// @grant none
// @namespace http://tampermonkey.net/
// ==/UserScript==
(function () {
'use strict';
const createMenu = () => {
const menu = document.createElement('div');
menu.id = 'Change the contrast and brightness';
menu.style = `
position: fixed;
top: 100px;
right: 20px;
width: 240px;
background: black;
border: 2px solid white;
color: white;
font-family: sans-serif;
padding: 10px 15px 15px 15px;
border-radius: 8px;
z-index: 999999;
cursor: grab;
user-select: none;
display: flex;
flex-direction: column;
align-items: flex-start;
`;
const titleBar = document.createElement('div');
titleBar.style = 'font-size: 18px; font-weight: bold; margin-bottom: 10px; width: 100%;';
// Dragging logic
let isDragging = false;
let offsetX, offsetY;
titleBar.addEventListener('mousedown', (e) => {
isDragging = true;
offsetX = e.clientX - menu.getBoundingClientRect().right;
offsetY = e.clientY - menu.offsetTop;
menu.style.cursor = 'grabbing';
e.preventDefault();
});
document.addEventListener('mouseup', () => {
isDragging = false;
menu.style.cursor = 'grab';
});
document.addEventListener('mousemove', (e) => {
if (isDragging) {
const newRight = window.innerWidth - e.clientX - offsetX;
menu.style.right = `${newRight}px`;
menu.style.top = `${e.clientY - offsetY}px`;
}
});
// Minimize button
const minimizeBtn = document.createElement('button');
minimizeBtn.textContent = '-';
minimizeBtn.style = `
position: absolute;
top: 6px;
right: 8px;
background: transparent;
color: white;
border: 1px solid white;
width: 20px;
height: 20px;
font-size: 14px;
line-height: 14px;
padding: 0;
border-radius: 4px;
cursor: pointer;
user-select: none;
`;
// Mod circle button (początkowo ukryty)
const modBtn = document.createElement('button');
modBtn.textContent = 'MOD';
modBtn.style = `
position: fixed;
bottom: 20px;
right: 20px;
width: 50px;
height: 50px;
background: black;
border: 2px solid white;
border-radius: 50%;
color: white;
font-weight: bold;
font-family: sans-serif;
font-size: 16px;
cursor: pointer;
z-index: 999999;
display: none;
user-select: none;
box-shadow: 0 0 8px white;
`;
// Nick display inside menu - zawsze widoczny
const nickDisplay = document.createElement('div');
nickDisplay.style = `
margin-top: 15px;
font-size: 14px;
font-weight: 600;
user-select: none;
width: 100%;
text-align: center;
`;
// Create sliders + labels + value displays helper
const createSliderControl = (labelText, min, max, initialValue) => {
const wrapper = document.createElement('div');
const label = document.createElement('label');
label.textContent = labelText;
label.className = 'slider-label';
const slider = document.createElement('input');
slider.type = 'range';
slider.min = min;
slider.max = max;
slider.value = initialValue;
slider.classList.add('custom-slider');
const valueDisplay = document.createElement('div');
valueDisplay.className = 'slider-value';
valueDisplay.textContent = slider.value;
wrapper.appendChild(label);
wrapper.appendChild(slider);
wrapper.appendChild(valueDisplay);
return { wrapper, slider, valueDisplay };
};
// Style for sliders and labels
const style = document.createElement('style');
style.textContent = `
input[type="range"].custom-slider {
width: 100%;
appearance: none;
background: black;
border: 1px solid white;
height: 8px;
outline: none;
margin-top: 6px;
cursor: pointer;
}
input[type="range"].custom-slider::-webkit-slider-thumb {
appearance: none;
height: 14px;
width: 14px;
background: black;
border: 2px solid white;
}
input[type="range"].custom-slider::-moz-range-thumb {
height: 14px;
width: 14px;
background: black;
border: 2px solid white;
}
.slider-label {
margin-top: 12px;
font-size: 14px;
font-weight: 600;
}
.slider-value {
font-size: 13px;
margin-top: 2px;
color: #ccc;
text-align: right;
}
`;
// Create brightness and contrast sliders
const brightnessControl = createSliderControl('Brightness (%)', 0, 200, 100);
const contrastControl = createSliderControl('Contrast (%)', 0, 200, 100);
// Container for sliders (to toggle display)
const slidersContainer = document.createElement('div');
slidersContainer.appendChild(brightnessControl.wrapper);
slidersContainer.appendChild(contrastControl.wrapper);
// Apply filters on body live when sliders change
const applyFilters = () => {
const brightness = brightnessControl.slider.value;
const contrast = contrastControl.slider.value;
document.body.style.filter = `brightness(${brightness}%) contrast(${contrast}%)`;
};
brightnessControl.slider.addEventListener('input', () => {
brightnessControl.valueDisplay.textContent = brightnessControl.slider.value;
applyFilters();
});
contrastControl.slider.addEventListener('input', () => {
contrastControl.valueDisplay.textContent = contrastControl.slider.value;
applyFilters();
});
// Set initial filter
applyFilters();
// Nick detection and refresh every 2 seconds if not found
const nickDisplayText = () => {
const nicknameDiv = document.querySelector('.nickname');
const foundNick = nicknameDiv?.childNodes?.[0]?.textContent?.trim();
if (foundNick) {
nickDisplay.textContent = 'Nick: ' + foundNick;
clearInterval(nickInterval);
} else {
nickDisplay.textContent = 'Nick: Nie znaleziono nicku';
}
};
let nickInterval = setInterval(nickDisplayText, 2000);
nickDisplayText(); // pierwsze sprawdzenie od razu
// Minimize button action
minimizeBtn.onclick = () => {
if (slidersContainer.style.display !== 'none') {
// minimalizuj - chowamy suwaki, zwężamy menu, pokazujemy modBtn
slidersContainer.style.display = 'none';
minimizeBtn.textContent = '+';
menu.style.width = '70px';
menu.style.height = 'auto'; // aby nick był widoczny
modBtn.style.display = 'block';
} else {
// otwórz
slidersContainer.style.display = 'block';
minimizeBtn.textContent = '-';
menu.style.width = '240px';
menu.style.height = 'auto';
modBtn.style.display = 'none';
}
};
// Mod button przywracający menu
modBtn.onclick = () => {
slidersContainer.style.display = 'block';
minimizeBtn.textContent = '-';
menu.style.width = '240px';
menu.style.height = 'auto';
modBtn.style.display = 'none';
};
// Dodaj elementy do menu
menu.appendChild(titleBar);
menu.appendChild(minimizeBtn);
menu.appendChild(slidersContainer);
menu.appendChild(nickDisplay);
document.head.appendChild(style);
document.body.appendChild(menu);
document.body.appendChild(modBtn);
};
window.addEventListener('load', () => {
setTimeout(createMenu, 500);
});
})();