Genel Crackermain Arka Plan Yağmur Efekti

ZenzeiCG

ZenzeiCG

Bronze Cracker
0
Rep
35
Likes
Bronze Cracker
User ID:
23445
Joined: Sep 29, 2025
Messages: 21
Point: 2,575
Code:
// ==UserScript==
// @name         Crackermain.net Kalıcı Yağmur Efekti v1.6 (Yenileme Takılma Fix)
// @namespace    http://tampermonkey.net/
// @version      1.6
// @description  Yağmur efekti kalıcı olur ama site yenileme/takılma sorunu çıkarmaz
// @author       LULU
// @match        *://crackermain.net/*
// @grant        GM_registerMenuCommand
// @grant        GM_addStyle
// @grant        GM_notification
// @run-at       document-end
// ==/UserScript==

(function() {
    'use strict';

    let RAIN_DENSITY = parseInt(localStorage.getItem('crm_rain_density') || '120');
    let isRaining = localStorage.getItem('crm_rain_active') === 'true';

    let canvas = null;
    let ctx = null;
    let drops = [];
    let rafId = null;
    let restoreTimeout = null;

    GM_addStyle(`
        #crm-rain-canvas {
            position: fixed !important;
            top: 0 !important;
            left: 0 !important;
            width: 100vw !important;
            height: 100vh !important;
            pointer-events: none !important;
            z-index: 99 !important;
            opacity: 0.35 !important;
        }
    `);

    function createCanvas() {
        if (canvas) return canvas;

        canvas = document.createElement('canvas');
        canvas.id = 'crm-rain-canvas';
        document.body.appendChild(canvas);
        ctx = canvas.getContext('2d');
        resizeCanvas();
        return canvas;
    }

    function resizeCanvas() {
        if (!canvas) return;
        canvas.width = window.innerWidth;
        canvas.height = window.innerHeight;
    }

    class Drop {
        constructor() { this.reset(); }
        reset() {
            this.x = Math.random() * window.innerWidth;
            this.y = Math.random() * -window.innerHeight * 1.2;
            this.length = Math.random() * 25 + 10;
            this.speed = Math.random() * 8 + 4;
            this.thickness = Math.random() * 1.2 + 0.6;
        }
        fall() {
            this.y += this.speed;
            if (this.y > window.innerHeight) this.reset();
        }
        draw() {
            ctx.beginPath();
            ctx.moveTo(this.x, this.y);
            ctx.lineTo(this.x, this.y + this.length);
            ctx.strokeStyle = '#a0d8ef';
            ctx.lineWidth = this.thickness;
            ctx.stroke();
        }
    }

    function initDrops() {
        drops = Array(RAIN_DENSITY).fill().map(() => new Drop());
    }

    function animate() {
        if (!isRaining || !ctx || document.hidden) return;

        ctx.clearRect(0, 0, canvas.width, canvas.height);
        drops.forEach(d => { d.fall(); d.draw(); });

        rafId = requestAnimationFrame(animate);
    }

    function startRain(silent = false) {
        createCanvas();
        initDrops();
        isRaining = true;
        localStorage.setItem('crm_rain_active', 'true');
        animate();

        if (!silent) GM_notification({title: "Yağmur", text: "Başladı – kalıcı mod"});
    }

    function stopRain() {
        isRaining = false;
        localStorage.setItem('crm_rain_active', 'false');
        if (rafId) cancelAnimationFrame(rafId);
        rafId = null;
        if (ctx) ctx.clearRect(0, 0, canvas?.width || 0, canvas?.height || 0);
        GM_notification({title: "Yağmur", text: "Durduruldu"});
    }

    function setDensity(val) {
        RAIN_DENSITY = Math.max(40, Math.min(400, val));
        localStorage.setItem('crm_rain_density', RAIN_DENSITY);
        if (isRaining) initDrops();
        GM_notification({title: "Yoğunluk", text: RAIN_DENSITY + " damla"});
    }

    // MENÜ
    GM_registerMenuCommand("☔ Yağmuru Başlat (Kalıcı)", () => startRain());
    GM_registerMenuCommand("⛔ Yağmuru Durdur", stopRain);
    GM_registerMenuCommand("🌧 Hafif (60)", () => setDensity(60));
    GM_registerMenuCommand("🌧 Orta (120)", () => setDensity(120));
    GM_registerMenuCommand("🌧 Şiddetli (220)", () => setDensity(220));

    // Restore – sadece bir kere + gecikmeli
    function tryRestore() {
        if (restoreTimeout) clearTimeout(restoreTimeout);

        restoreTimeout = setTimeout(() => {
            if (localStorage.getItem('crm_rain_active') === 'true') {
                startRain(true);
                console.log("[Yağmur] Restore edildi");
            }
        }, 1200); // 1.2 sn gecikme – site yüklenmesini bekle
    }

    // Temiz ve güvenli tetikleyiciler
    window.addEventListener('load', tryRestore);
    document.addEventListener('DOMContentLoaded', tryRestore);
    document.addEventListener('visibilitychange', () => {
        if (document.visibilityState === 'visible') tryRestore();
    });
    window.addEventListener('resize', () => {
        resizeCanvas();
        if (isRaining) animate();
    });

    // İlk çalıştırma
    setTimeout(tryRestore, 800);

    console.log("[Crackermain Yağmur v1.6] Yüklendi – yenileme takılma fixli");

})();


Direk yapay zeka yaptı.
Kullanımı:tampermonkey eklentisini indirin ve size verdiğim kodu yeni + simgesine basarak kodu yapıştırın.daha sonra sitemize girerek tampermonkey eklentisinde kalıcı yağmur efektine basarak ordann ayarlayabilirsiniz.
Bir sorun olursa sorabilirsiniz
 
Tüm sayfalar yüklendi.
Home Register
Top