ScriptBlox Auto Upload Loop no game id script

good

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         ScriptBlox Auto Upload Loop no game id script
// @namespace    http://tampermonkey.net/
// @version      1
// @description  good
// @match        https://scriptblox.com/upload
// @grant        none
// @license      
// ==/UserScript==

(function() {
    'use strict';

    const targetGameID = "";
    const hardcodedSuffix = "";
    function generateRandomLetters(length) {
        let result = '';
        const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
        for (let i = 0; i < length; i++) {
            result += characters.charAt(Math.floor(Math.random() * characters.length));
        }
        return result;
    }
    let currentTitle = generateRandomLetters(15);
    let currentFeatures = generateRandomLetters(25) + hardcodedSuffix;

    function trigger(el) {
        if (!el) return;
        el.dispatchEvent(new Event('input', { bubbles: true }));
        el.dispatchEvent(new Event('change', { bubbles: true }));
        el.dispatchEvent(new Event('blur', { bubbles: true }));
    }

    setInterval(() => {
        const successMsg = document.querySelector('small.text-green-500');
        const submitBtn = document.querySelector('button[type="submit"]');

        if (successMsg && successMsg.textContent.includes('successfully')) {
            if (submitBtn) submitBtn.click();
            currentTitle = generateRandomLetters(15);
            currentFeatures = generateRandomLetters(25) + hardcodedSuffix;

            const uploadLink = document.querySelector('a[href="/upload"]');
            if (uploadLink) {
                uploadLink.click();
            } else {
                const allSpans = document.querySelectorAll('span');
                for (const s of allSpans) {
                    if (s.textContent.trim() === "Upload") {
                        s.click();
                        if (s.closest('a')) s.closest('a').click();
                        break;
                    }
                }
            }
            return;
        }

        let isVerified = false;
        const cfInput = document.querySelector('input[name="cf-turnstile-response"]');
        if (cfInput && cfInput.value) isVerified = true;

        const successIcon = document.getElementById('success');
        if (successIcon) {
            const style = window.getComputedStyle(successIcon);
            if (style.display !== 'none' && style.visibility !== 'hidden') isVerified = true;
        }

        const tInput = document.getElementById('title');
        const gInput = document.getElementById('game');
        const fInput = document.getElementById('features');
        const sInput = document.getElementById('script');

        if (gInput && gInput.value !== targetGameID) {
            gInput.value = targetGameID;
            trigger(gInput);
        }
        if (fInput && fInput.value !== currentFeatures) {
            fInput.value = currentFeatures;
            trigger(fInput);
        }
        if (tInput && tInput.value !== currentTitle && !isVerified) {
             tInput.value = currentTitle;
             trigger(tInput);
        }
        if (submitBtn && isVerified) {
            if (sInput && sInput.value.trim() !== "") {
                submitBtn.click();
            }
        }

    }, 0);

})();