Capybara Clicker

inf click, inf upgrades

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, Greasemonkey alebo Violentmonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, % alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey alebo Userscripts.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie správcu používateľských skriptov.

(Už mám správcu používateľských skriptov, nechajte ma ho nainštalovať!)

Advertisement:

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

(Už mám správcu používateľských štýlov, nechajte ma ho nainštalovať!)

Advertisement:

// ==UserScript==
// @name         Capybara Clicker
// @namespace    http://tampermonkey.net/
// @version      4.3
// @description  inf click, inf upgrades
// @author       Gemini
// @match        https://capybara-game.com/
// @grant        none
// @run-at       document-start
// ==/UserScript==

(function() {
    'use strict';

    // 1. Storage Keys Helper
    const UPGRADE_KEYS = [
        'upgrade_1', 'upgrade_2', 'upgrade_3', 'upgrade_4', 'upgrade_5', 
        'upgrade_6', 'upgrade_7', 'upgrade_8', 'upgrade_9', 'upgrade_10',
        'upg_1', 'upg_2', 'upg_3', 'upg_4', 'upg_5', 'upg_6', 'upg_7', 'upg_8'
    ];

    // Read existing storage or provide reasonable defaults if empty
    let currentLevel = localStorage.getItem('upgrade_1') || '999';
    let currentCash = localStorage.getItem('number_capybaras') || '100000000000';
    let currentClicks = localStorage.getItem('number_click') || '1000';

    // 2. LocalStorage Interceptor Engine
    const originalGetItem = Storage.prototype.getItem;
    const originalSetItem = Storage.prototype.setItem;

    Storage.prototype.getItem = function(key) {
        // Intercept values live as the game requests them
        if (key === 'number_capybaras') return originalGetItem.call(localStorage, 'number_capybaras') || currentCash;
        if (key === 'capyparas_earned') return originalGetItem.call(localStorage, 'capyparas_earned') || currentCash;
        if (key === 'number_click') return originalGetItem.call(localStorage, 'number_click') || currentClicks;

        // Auto unlock achievements and skins
        if (key.startsWith('achiev_') || key.startsWith('skin_')) {
            return '1';
        }

        // Target upgrades via wildcard search
        if (key.toLowerCase().includes('upgrade') || key.toLowerCase().includes('upg')) {
            return originalGetItem.call(localStorage, 'upgrade_1') || currentLevel;
        }

        return originalGetItem.apply(this, arguments);
    };

    Storage.prototype.setItem = function(key, value) {
        return originalSetItem.apply(this, arguments);
    };

    // 3. Inject GUI
    function injectGUI() {
        if (document.getElementById('capy-god-menu')) return;

        const menu = document.createElement('div');
        menu.id = 'capy-god-menu';
        menu.style = `
            position: fixed; top: 15px; left: 15px; width: 280px;
            background: rgba(10, 10, 10, 0.98); color: #fff; font-family: system-ui, -apple-system, sans-serif;
            border: 2px solid #ffcc00; border-radius: 10px; z-index: 10000000;
            box-shadow: 0 0 20px rgba(255, 204, 0, 0.4); font-size: 13px; overflow: hidden;
        `;

        menu.innerHTML = `
            <div id="capy-drag-header" style="background: linear-gradient(90deg, #ffcc00, #ff6600); padding: 12px; cursor: move; font-weight: bold; text-align: center; letter-spacing: 1px; color: #000;">
                👑 OpenSource Capybara Clicker
            </div>
            <div style="padding: 15px; display: flex; flex-direction: column; gap: 12px;">
                
                <div>
                    <label style="display: block; margin-bottom: 4px; color: #ffcc00; font-weight: bold;">All Upgrades Level:</label>
                    <input type="number" id="target-level-input" value="${currentLevel}" style="width: 100%; padding: 6px; background: #222; border: 1px solid #444; color: #fff; border-radius: 4px; font-family: monospace; font-size: 14px; box-sizing: border-box;">
                </div>

                <div>
                    <label style="display: block; margin-bottom: 4px; color: #aaa;">Capybara Balance:</label>
                    <input type="text" id="target-cash-input" value="${currentCash}" style="width: 100%; padding: 6px; background: #222; border: 1px solid #444; color: #fff; border-radius: 4px; font-family: monospace; font-size: 14px; box-sizing: border-box;">
                </div>

                <div>
                    <label style="display: block; margin-bottom: 4px; color: #aaa;">Total Clicks:</label>
                    <input type="number" id="target-clicks-input" value="${currentClicks}" style="width: 100%; padding: 6px; background: #222; border: 1px solid #444; color: #fff; border-radius: 4px; font-family: monospace; font-size: 14px; box-sizing: border-box;">
                </div>

                <button id="btn-apply" style="background: #ffcc00; color: #000; border: none; padding: 10px; border-radius: 4px; cursor: pointer; font-weight: bold; width: 100%; margin-top: 5px; transition: 0.2s;">
                    Apply modifications & Reload
                </button>
            </div>
        `;

        document.body.appendChild(menu);

        const levelInput = document.getElementById('target-level-input');
        const cashInput = document.getElementById('target-cash-input');
        const clicksInput = document.getElementById('target-clicks-input');
        const applyBtn = document.getElementById('btn-apply');

        applyBtn.addEventListener('click', () => {
            const typedLevel = levelInput.value.trim() || "0";
            const typedCash = cashInput.value.trim() || "0";
            const typedClicks = clicksInput.value.trim() || "0";

            localStorage.setItem('number_capybaras', typedCash);
            localStorage.setItem('capyparas_earned', typedCash);
            localStorage.setItem('number_click', typedClicks);

            UPGRADE_KEYS.forEach(k => {
                localStorage.setItem(k, typedLevel);
            });

            window.location.reload();
        });

        // Window Dragging Controls
        let isDragging = false, startX, startY, initialX, initialY;
        const header = document.getElementById('capy-drag-header');
        
        header.addEventListener('mousedown', (e) => {
            isDragging = true;
            startX = e.clientX; startY = e.clientY;
            initialX = menu.offsetLeft; initialY = menu.offsetTop;
        });
        
        document.addEventListener('mousemove', (e) => {
            if (!isDragging) return;
            menu.style.left = (initialX + (e.clientX - startX)) + 'px';
            menu.style.top = (initialY + (e.clientY - startY)) + 'px';
        });
        
        document.addEventListener('mouseup', () => isDragging = false);
    }

    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', injectGUI);
    } else {
        injectGUI();
    }
})();