SKLauncher Bypass

Bypasses the requirement to view ads to download and reveals the actual files dynamically per update.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да инсталирате разширение, като например Tampermonkey .

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name         SKLauncher Bypass
// @namespace    http://tampermonkey.net/
// @version      2.3
// @description  Bypasses the requirement to view ads to download and reveals the actual files dynamically per update.
// @author       InternetNinjo
// @match        https://skmedix.pl/*
// @grant        GM_xmlhttpRequest
// @connect      skmedix.pl
// @connect      api.quotable.io
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // 1. Fetch a random quote from the Web
    const fetchWebQuote = () => {
        return new Promise((resolve) => {
            GM_xmlhttpRequest({
                method: "GET",
                url: "https://api.quotable.io/random?maxLength=85",
                onload: (res) => {
                    try {
                        const data = JSON.parse(res.responseText);
                        resolve(`${data.content} — ${data.author}`);
                    } catch(e) {
                        resolve("Don't dig straight down!");
                    }
                },
                onerror: () => resolve("Minecraft is better with friends.")
            });
        });
    };

    const getPageVersion = () => {
        const paragraphs = document.querySelectorAll('p.fw-light');
        for (let p of paragraphs) {
            if (p.textContent.includes('Version')) {
                const match = p.textContent.match(/\d+\.\d+\.\d+/);
                return match ? match[0] : null;
            }
        }
        return "3.2.18";
    };

    const checkUrl = (url) => {
        return new Promise((resolve) => {
            GM_xmlhttpRequest({ method: "HEAD", url: url, onload: (res) => resolve(res.status === 200), onerror: () => resolve(false) });
        });
    };

    const init = async () => {
        const version = getPageVersion();
        const quote = await fetchWebQuote();

        const box = document.createElement('div');
        box.style = `
            position: fixed; bottom: 30px; right: 30px; z-index: 10000;
            background: rgba(24, 24, 27, 0.98); backdrop-filter: blur(12px);
            border: 1px solid #845ec2; border-radius: 16px; padding: 24px;
            color: #efe9f3; font-family: 'Inter', sans-serif;
            box-shadow: 0 20px 40px rgba(0,0,0,0.8); min-width: 320px;
        `;
        box.innerHTML = `<div style="font-size: 14px; color: #ababad;">📡 Verifying links...</div>`;
        document.body.appendChild(box);

        const jarUrl = `https://skmedix.pl/binaries/skl/${version}/SKlauncher-${version}.jar`;
        const exeUrl = `https://skmedix.pl/binaries/skl/${version}/win-x64/SKlauncher-${version}_Setup.exe`;
        const jarExists = await checkUrl(jarUrl);
        const exeExists = await checkUrl(exeUrl);

        box.innerHTML = `
            <div style="margin-bottom: 22px; text-align: center; font-style: italic; color: #ffeb3b; font-size: 12px; line-height: 1.5; text-shadow: 1px 1px 2px #000; padding: 0 5px;">
                "${quote}"
            </div>

            <div style="display: flex; align-items: center; margin-bottom: 20px;">
                <div style="background: #845ec2; width: 8px; height: 8px; border-radius: 50%; margin-right: 10px; box-shadow: 0 0 10px #845ec2;"></div>
                <span style="font-weight: 800; font-size: 18px; letter-spacing: -0.5px;">SKlauncher Toolbox</span>
            </div>

            <div style="display: grid; gap: 10px;">
                <div style="font-size: 11px; color: #845ec2; font-weight: bold; text-transform: uppercase; margin-bottom: 4px; letter-spacing: 0.5px;">Verified Downloads (v${version})</div>
                ${exeExists ? `
                    <a href="${exeUrl}" style="background: linear-gradient(135deg, #1a75ff, #845ec2); color: white; text-align: center; padding: 12px; border-radius: 10px; text-decoration: none; font-weight: 600; font-size: 14px; transition: transform 0.1s ease;">
                        Download Installer (.exe)
                    </a>` : ''}
                ${jarExists ? `
                    <a href="${jarUrl}" style="background: rgba(132, 94, 194, 0.15); border: 1px solid #845ec2; color: #efe9f3; text-align: center; padding: 12px; border-radius: 10px; text-decoration: none; font-weight: 600; font-size: 14px;">
                        Download Universal (.jar)
                    </a>` : ''}
            </div>

            ${(!jarExists && !exeExists) ? `<div style="color: #be3a51; font-size: 13px; margin-top: 10px;">Files not found on binary server.</div>` : ''}
        `;
    };

    init();
})();