NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Автоклик по кнопкам "Запустить" с задержкой // @namespace http://tampermonkey.net/ // @version 1.5 // @description Находит и кликает по каждой кнопке с текстом "Запустить" с задержкой в 2 минуты и перезагрузкой страницы через 1 минуту после клика // @match https://app.stch.games/* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; const delay = 5 * 60 * 1000; // Интервал для проверки карточек (5 минут) const initialTimeout = 5 * 1000; // Старт скрипта через (10 секунд) const reloadDelay = 7 * 30 * 1000; // Перезагрузка через 2 минуты после клика // Загружаем время последнего клика из localStorage, если оно есть let lastClickTime = parseInt(localStorage.getItem('lastClickTime')) || 0; // Функция для извлечения цены из карточки function getPrice(card) { const priceElement = card.querySelector(".me-lego__item-me-input-static.card__field .staticSpan"); if (!priceElement) return 0; const priceText = priceElement.innerText.match(/\d+(\.\d+)?/); // Извлекаем число из текста return priceText ? parseFloat(priceText[0]) : 0; } // Функция для нахождения, сортировки и клика по кнопкам "Запустить" function clickNextButton() { const currentTime = Date.now(); // Проверяем, прошло ли достаточно времени с последнего клика if (currentTime - lastClickTime < delay) { return; // Не кликаем, если время еще не прошло } // Находим все карточки на странице const cards = Array.from(document.querySelectorAll(".me-card-list-item-wrapper")); // Фильтруем карточки, где кнопка "Запустить" доступна и цена больше 0 const validCards = cards.filter(card => { const price = getPrice(card); const targetButton = card.querySelector('button'); return targetButton && targetButton.innerText.includes('Запустить') && !targetButton.disabled && price > 0; }); // Если нет доступных карточек, ничего не делаем if (validCards.length === 0) { console.log("Нет доступных карточек с ценой больше 0."); return; } // Сортируем карточки по цене по убыванию validCards.sort((a, b) => getPrice(b) - getPrice(a)); // Выбираем первую карточку (с самой высокой ценой) const targetCard = validCards[0]; const targetButton = targetCard.querySelector('button'); const cardPrice = getPrice(targetCard); // Если кнопка "Запустить" доступна, нажимаем её if (targetButton && targetButton.innerText.includes('Запустить') && !targetButton.disabled) { targetButton.click(); // Нажимаем кнопку console.log(`Кнопка "Запустить" нажата на карточке с самой высокой ценой: ${cardPrice}`); // Сохраняем время последнего клика в localStorage lastClickTime = currentTime; localStorage.setItem('lastClickTime', lastClickTime); // Перезагрузка страницы через указанное время после клика setTimeout(() => { location.reload(); }, reloadDelay); } } // Настроим MutationObserver для отслеживания изменений в DOM const observer = new MutationObserver(() => { // Таймаут на 10 секунд перед первым запуском функции clickNextButton setTimeout(() => { clickNextButton(); // Первый запуск через 10 секунд }, initialTimeout); // Каждый раз вызываем функцию для клика }); // Функция для повторного запуска скрипта после перезагрузки страницы function startScript() { // Запускаем observer на всем теле документа для отслеживания изменений observer.observe(document.body, { childList: true, subtree: true }); // Таймаут на 10 секунд перед первым запуском функции clickNextButton setTimeout(() => { clickNextButton(); // Первый запуск через 10 секунд }, initialTimeout); } // Запускаем скрипт при загрузке страницы startScript(); })();