您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Multilingual promo-code selector and language switcher for Castle Clash
- // ==UserScript==
- // @name Castle Clash Code Selector (Multilingual & Optimized)
- // @name:en Castle Clash Code Selector (Multilingual & Optimized)
- // @name:ru Выбор промокода Castle Clash (многоязычный и оптимизированный)
- // @namespace http://tampermonkey.net/
- // @version 1.8.5
- // @description Multilingual promo-code selector and language switcher for Castle Clash
- // @description:en Multilingual promo-code selector and language switcher for Castle Clash
- // @description:ru Многоязычный выбор промокодов и переключатель языка для Castle Clash
- // @match https://castleclash.igg.com/event/cdkey*
- // @grant none
- // @license MIT
- // ==/UserScript==
- (function() {
- 'use strict';
- // --- Configuration ---
- const CODES = [
- { id: '1', code: 'QYFUF6' },
- { id: '2', code: 'NYQZKQ' },
- { id: '3', code: 'KJYJT3' },
- { id: '4', code: 'DN72M7' },
- { id: '5', code: 'GDEJ9E' },
- { id: '6', code: 'ZRX6NB' } // Новый код
- ];
- const TRANSLATIONS = {
- en: { title: 'Select a promo code:', btnPrefix: '', switchLabel: 'Language:' },
- ru: { title: 'Выберите промокод:', btnPrefix: '', switchLabel: 'Язык:' }
- };
- // --- Helpers ---
- const params = new URLSearchParams(location.search);
- const currentLang = params.get('lang') in TRANSLATIONS ? params.get('lang') : 'en';
- const t = TRANSLATIONS[currentLang];
- const basePath = location.origin + '/event/cdkey';
- function langUrl(lang) {
- return `${basePath}?lang=${lang}`;
- }
- // --- Styles ---
- const css = `
- #cc-selector { position: fixed; top: 20px; left: 50%; transform: translateX(-50%);
- background: #fff; border: 1px solid #ccc; padding: 15px; z-index:9999;
- box-shadow:0 4px 10px rgba(0,0,0,0.2); border-radius:8px; font-family:sans-serif; }
- #cc-selector h3 { margin:0 0 10px; font-size:16px; }
- .cc-btn { margin:4px; padding:8px 12px; background:#007bff; color:#fff;
- border:none; border-radius:4px; cursor:pointer; font-size:14px; }
- .cc-btn:hover { background:#0056b3; }
- #cc-language { margin-bottom:8px; display:flex; align-items:center; gap:6px; }
- #cc-language a { text-decoration:none; font-size:14px; color:#007bff; }
- #cc-language a.active { font-weight:bold; cursor:default; }
- `;
- const styleNode = document.createElement('style');
- styleNode.textContent = css;
- document.head.append(styleNode);
- // --- UI Creation ---
- function buildUI() {
- const container = document.createElement('div');
- container.id = 'cc-selector';
- // Language Switcher
- const langDiv = document.createElement('div');
- langDiv.id = 'cc-language';
- langDiv.innerHTML = `<span>${t.switchLabel}</span>`;
- Object.keys(TRANSLATIONS).forEach(lang => {
- const a = document.createElement('a');
- a.href = langUrl(lang);
- a.textContent = lang.toUpperCase();
- if (lang === currentLang) a.classList.add('active');
- langDiv.append(a);
- });
- container.append(langDiv);
- // Title
- const titleEl = document.createElement('h3');
- titleEl.textContent = t.title;
- container.append(titleEl);
- // Buttons
- CODES.forEach(({ id, code }) => {
- const btn = document.createElement('button');
- btn.className = 'cc-btn';
- btn.textContent = `${id}. ${code}`;
- btn.addEventListener('click', () => insertCode(code));
- container.append(btn);
- });
- document.body.append(container);
- }
- // --- Insert & Trigger ---
- function insertCode(code) {
- const input = document.querySelector('#cdkey');
- if (input) {
- input.value = code;
- input.dispatchEvent(new Event('input', { bubbles: true }));
- }
- }
- // --- Init ---
- window.addEventListener('load', buildUI);
- })();