// ==UserScript== // @name My Drop Free Case Claimer // @namespace https://pube.tk // @version 2025-09-20 // @description Claims free cases // @author Abhorrent_Anger // @match https://mydrop.pro/free* // @icon https://www.google.com/s2/favicons?sz=64&domain=mydrop.pro // @grant none // @require https://cdn.jsdelivr.net/gh/CoeJoder/waitForKeyElements.js@v1.3/waitForKeyElements.js // @run-at document-end // ==/UserScript== const INITIAL_TIMER = 2000; const RECHECK_TIMER = 60 * 1000; const RELOAD_TIMER = 30 * 60 * 1000; const MAIN_WINDOW_SELECTOR = ".case-page"; const FREE_CASE_BUTTON = '.js-free-case-participate'; const HOUR_SELECTOR = '.js-countdown-hours'; const MINUTE_SELECTOR = '.js-countdown-minutes'; function clickFreeCase() { $(FREE_CASE_BUTTON).click(); } function runRoutines() { console.log('Checking for free coin claims...'); clickFreeCase(); setTimeout(runRoutines, RECHECK_TIMER); } function setupReload() { let reload_timer = Math.max(RELOAD_TIMER, getCooldown()); console.log('Sleeping for '+reload_timer+' seconds...'); setTimeout(reload, reload_timer); } function getCooldown() { let time = 0; time += $(HOUR_SELECTOR).text() * 60 * 60 * 1000; time += ($(MINUTE_SELECTOR).text() * 60 * 1000) + 60 * 1000; return time; } function reload() { console.log('Reloading...'); location.reload(); } waitForKeyElements(MAIN_WINDOW_SELECTOR, () => { setTimeout(runRoutines, INITIAL_TIMER); setTimeout(setupReload, RECHECK_TIMER); });