|
2025-07-21 02:07
조회: 13,490
추천: 4
플레이크 자동 뽑기○ 실행 결과 화면 ![]() ○ 간단한 설명 ㆍ결과 출력은 Alert 메시지로 출력되며, 또한 아직은 불안정한 코드입니다... 점차 업데이트하여 안정성을 확보하겠습니다. ㆍ꾸준히 업데이트를 할 계획을 가지고 작성한 게시글입니다. ㆍ댓글로 피드백 부탁드려요! ○ 답변 ㆍ우편 그만 보내주세요...부족한 거 저도 알고 있습니다... ㆍ오늘 획득한 포인트가 13058인게 말이 되냐라는 우편의 답변 → 코드를 테스트 하는 중 30회를 모두 소진하여 13058이라는 값이 나오게 되었습니다... 저 값은 현재 제가 가지고 있는 플레이크를 전환하면 얻을 수 있는 포인트입니다. ㆍ오늘 획득한 플레이크와 포인트에도 콤마를 추가해서 알아보기 쉽게 하면 좋겠다 → 반영 완료 했습니다. ○ 업데이트 기록 ㆍ(2025-07-21 오전 2:42) : 오늘 획득한 플레이크와 포인트 결과에 콤마를 추가해 결과값을 더 보기 쉽게 개선하였습니다. ㆍ(2025-07-21 오전 2:30) : 오늘 획득한 포인트와 손익 없음 결과를 이익 또는 손해 값만 출력 되도록 수정하였습니다. ○ 코드 function delay(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } function getRandom(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } function getFlakeCount() { const flakeWrapper = document.querySelector('span.item-content-text'); if (!flakeWrapper) return null; const innerSpan = flakeWrapper.querySelector('span'); if (!innerSpan) return null; const rawText = innerSpan.innerText; const numeric = parseInt(rawText.replace(/,/g, '') || '0'); return isNaN(numeric) ? null : numeric; } async function runDrawLoop() { console.clear(); const startFlake = getFlakeCount(); if (startFlake === null || isNaN(startFlake)) { alert('❌ 시작 보유량을 찾을 수 없습니다.'); return; } console.log(`▶️ 시작 플레이크 보유량: ${startFlake.toLocaleString()}`); const firstDrawButtons = document.querySelectorAll('span.button-draw-hover-text'); let initialButton = null; for (const btn of firstDrawButtons) { if (btn.innerText.trim() === '100 뽑기') { initialButton = btn; break; } } if (!initialButton) { alert('❌ 초기 "100 뽑기" 버튼을 찾을 수 없습니다.'); return; } initialButton.click(); await delay(getRandom(4000, 4200)); // 첫 팝업 대기 const rewards = []; let actualDrawCount = 0; let hasMissingReward = false; for (let i = 0; i < 30; i++) { actualDrawCount = i + 1; const rewardElement = document.querySelector('.l1l2-flakehub-popup-common-received_reward'); const rewardText = rewardElement ? rewardElement.innerText.trim() : ''; let message = ''; if (rewardText) { message = `🎁 ${actualDrawCount}회차 보상: ${rewardText}`; } else { message = `⚠️ ${actualDrawCount}회차: 보상 텍스트를 찾지 못했습니다.`; hasMissingReward = true; } console.log(message); rewards.push(message); const repeatButtons = document.querySelectorAll('span.block.whitespace-nowrap'); let clicked = false; for (const span of repeatButtons) { if (span.innerText.trim() === '100 뽑기 한번 더!') { span.click(); clicked = true; break; } } if (!clicked) { console.log(`❌ ${actualDrawCount}회차: "100 뽑기 한번 더!" 버튼을 찾지 못했습니다.`); break; } await delay(2700); // 각 뽑기 후 대기 시간 } const endFlake = getFlakeCount(); if (endFlake === null || isNaN(endFlake)) { alert('❌ 종료 보유량을 찾을 수 없습니다.'); return; } const gained = endFlake - startFlake; const absGained = Math.abs(gained); const gainSign = gained > 0 ? '+' : gained < 0 ? '-' : '±'; // 포인트 계산 const startPoint = Math.floor(startFlake / 25); const endPoint = Math.floor(endFlake / 25); const pointDiff = endPoint - startPoint; const pointSign = pointDiff > 0 ? '+' : pointDiff < 0 ? '-' : '±'; const finalPointMessage = `${pointSign}${endPoint.toLocaleString()}`; // 손익 계산 줄 const flakeResultLine = gained > 0 ? `📈 이익: +${endFlake.toLocaleString()}` : gained < 0 ? `📉 손해: -${endFlake.toLocaleString()}` : `➖ 손익 없음: ±${endFlake.toLocaleString()}`; // ✅ 콘솔 출력 console.log('✅ 30회 완료!'); console.log(`▶️ 종료 후 플레이크 보유량: ${endFlake.toLocaleString()}`); console.log(`🎉 오늘 획득한 플레이크 수: ${gained.toLocaleString()}`); console.log(`🏅 오늘 획득한 포인트: ${finalPointMessage}`); console.log(flakeResultLine); if (hasMissingReward) { console.log('n🔁 보상 텍스트 누락 감지 — 받은 보상 전체 다시 출력 🔁'); rewards.forEach(r => console.log(r)); } // 📢 alert 메시지 구성 let alertMessage = ''; alertMessage += `▶️ 시작 플레이크 보유량: ${startFlake.toLocaleString()}n`; alertMessage += `✅ ${actualDrawCount}회 완료!n`; alertMessage += `▶️ 종료 후 플레이크 보유량: ${endFlake.toLocaleString()}n`; alertMessage += `🎉 오늘 획득한 플레이크 수: ${gained.toLocaleString()}n`; alertMessage += `🏅 오늘 획득한 포인트: ${finalPointMessage}n`; alertMessage += `${flakeResultLine}`; const fullAlert = [...rewards, '', alertMessage].join('n'); alert(fullAlert); } void runDrawLoop();
EXP
261
(61%)
/ 301
|





Heal