Выбор и автоматическая вставка промокода для Castle Clash
目前為
// ==UserScript==
// @name Castle Clash Code Selector (Optimized)
// @name:en Castle Clash Code Selector (Optimized)
// @namespace http://tampermonkey.net/
// @version 1.6.0
// @description Выбор и автоматическая вставка промокода для Castle Clash
// @description:en Select and auto-insert promo code for Castle Clash
// @match https://castleclash.igg.com/event/cdkey/ *
// @grant none
// @license MIT
// ==/UserScript==
(function () {
'use strict';
// Доступные промокоды
const codes = {
"1": "QYFUF6",
"2": "NYQZKQ",
"3": "KJYJT3",
"4": "DN72M7",
"5": "GDEJ9E"
};
// Создание стилей
const style = document.createElement('style');
style.textContent = `
#code-selector {
position: fixed;
top: 20px;
left: 50%;
transform: translateX(-50%);
background: #fff;
border: 1px solid #ccc;
padding: 15px 20px;
z-index: 99999;
box-shadow: 0 4px 10px rgba(0,0,0,0.2);
font-family: sans-serif;
text-align: center;
border-radius: 8px;
}
#code-selector h3 {
margin-top: 0;
}
.code-btn {
display: inline-block;
margin: 5px;
padding: 8px 14px;
background-color: #007bff;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 14px;
}
.code-btn:hover {
background-color: #0056b3;
}
`;
document.head.appendChild(style);
// Создание интерфейса выбора
function createCodeSelectorUI() {
const container = document.createElement('div');
container.id = 'code-selector';
container.innerHTML = `
<h3>Выберите промокод:</h3>
`;
Object.entries(codes).forEach(([key, code]) => {
const btn = document.createElement('button');
btn.className = 'code-btn';
btn.textContent = `${key}. ${code}`;
btn.onclick = () => insertCode(code);
container.appendChild(btn);
});
document.body.appendChild(container);
}
// Вставка кода в поле ввода
function insertCode(code) {
const input = document.querySelector("#cdkey");
if (input) {
input.value = code;
triggerInputEvent(input); // Эмуляция ввода для корректного отслеживания
} else {
waitForInputElementAndInsert(code);
}
}
// Эмуляция события ввода
function triggerInputEvent(inputElement) {
const event = new Event('input', { bubbles: true });
inputElement.dispatchEvent(event);
}
// Ожидание появления поля ввода
function waitForInputElementAndInsert(code) {
const observer = new MutationObserver(() => {
const input = document.querySelector("#cdkey");
if (input) {
input.value = code;
triggerInputEvent(input);
observer.disconnect();
}
});
observer.observe(document.body, { childList: true, subtree: true });
}
// Запуск скрипта
window.addEventListener('load', () => {
createCodeSelectorUI();
});
})();