$0.000000
Pending $0.000000 / 1.000000 • Tap $0.000100 ×1
USDT Gate
Reach $1 pending to unlock ad
...
Info
...
Wallet
KYC
Loading...
Withdraw (USDT TRC20)
Loading...
/* IZYPAY_AVATAR_TAP_HOOK_START */ (function(){ // ---- CONFIG ---- var TAP_ENDPOINT = '/api/tap/'; // your backend tap endpoint var HOLD_INTERVAL_MS = 140; // speed for press&hold var MAX_TAPS_PER_CALL = 10; // batch to reduce requests var HOLD_BATCH = 2; // how many taps per tick while holding var holdTimer = null; var holdActive = false; var lastTapAt = 0; function sleep(ms){ return new Promise(function(res){ setTimeout(res, ms); }); } async function doTap(tapsInc){ try{ var r = await fetch(TAP_ENDPOINT, { method:'POST', credentials:'include', headers:{'Content-Type':'application/json'}, body: JSON.stringify({tapsInc: tapsInc}) }); var j = await r.json().catch(function(){ return null; }); // If overlay refresh exists (we defined refresh() in overlay script), call it to update UI if(typeof window.__izy_refresh_overlay === 'function'){ window.__izy_refresh_overlay(); } return j; }catch(e){ return null; } } function attachToAvatar(img){ if(!img || img.dataset.izyTapAttached === '1') return; img.dataset.izyTapAttached = '1'; // Make it feel tappable img.style.cursor = 'pointer'; img.style.webkitTapHighlightColor = 'transparent'; img.style.touchAction = 'manipulation'; // Click = 1 tap (fast) img.addEventListener('click', function(ev){ ev.preventDefault(); ev.stopPropagation(); doTap(1); }, true); // Press & hold = auto tap function startHold(ev){ ev.preventDefault(); ev.stopPropagation(); if(holdActive) return; holdActive = true; // immediate tap burst doTap(HOLD_BATCH); holdTimer = setInterval(function(){ // small rate limit so we don't spam too hard var now = Date.now(); if(now - lastTapAt < 80) return; lastTapAt = now; // batch request doTap(HOLD_BATCH); }, HOLD_INTERVAL_MS); } function endHold(ev){ if(!holdActive) return; holdActive = false; if(holdTimer){ clearInterval(holdTimer); holdTimer = null; } } img.addEventListener('touchstart', startHold, {passive:false, capture:true}); img.addEventListener('touchend', endHold, {passive:true, capture:true}); img.addEventListener('touchcancel', endHold, {passive:true, capture:true}); img.addEventListener('mousedown', startHold, true); window.addEventListener('mouseup', endHold, true); console.log('[iZyPay] Avatar tap hook attached ✅'); } // Find the "main avatar": biggest IMG near center of screen function findMainAvatar(){ var imgs = Array.prototype.slice.call(document.querySelectorAll('img')); if(!imgs.length) return null; var vw = Math.max(document.documentElement.clientWidth, window.innerWidth||0); var vh = Math.max(document.documentElement.clientHeight, window.innerHeight||0); var best = null; var bestScore = 0; imgs.forEach(function(img){ if(!img || !img.getBoundingClientRect) return; var r = img.getBoundingClientRect(); if(r.width < 140 || r.height < 140) return; // ignore small icons var cx = r.left + r.width/2; var cy = r.top + r.height/2; // prefer near center area where avatar is var centerScore = 1.0 - (Math.abs(cx - vw/2)/(vw/2) + Math.abs(cy - vh*0.45)/(vh/2))*0.35; var areaScore = Math.min(1, (r.width*r.height)/(420*420)); var score = centerScore + areaScore; if(score > bestScore){ bestScore = score; best = img; } }); return best; } // Keep trying because app is SPA and re-renders function scan(){ var a = findMainAvatar(); if(a) attachToAvatar(a); } setInterval(scan, 1000); setTimeout(scan, 300); setTimeout(scan, 1500); // Also observe DOM changes try{ var mo = new MutationObserver(function(){ scan(); }); mo.observe(document.documentElement, {childList:true, subtree:true}); }catch(e){} })(); /* IZYPAY_AVATAR_TAP_HOOK_END */
Combo
x1