팁과 노하우 게시판

내댓글

모바일 상단 메뉴

본문 페이지

[일반] 플레이크 자동 뽑기

Heal
댓글: 4 개
조회: 9836
추천: 4
2025-07-21 02:07:25
○ 실행 결과 화면


○ 간단한 설명
ㆍ결과 출력은 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();

Lv3 Heal

모바일 게시판 하단버튼

댓글

새로고침
새로고침

모바일 게시판 하단버튼

지금 뜨는 인벤

더보기+

모바일 게시판 리스트

모바일 게시판 하단버튼

글쓰기

모바일 게시판 페이징

최근 HOT한 콘텐츠

  • 로아
  • 게임
  • IT
  • 유머
  • 연예
AD