원본 : https://arca.live/b/neuralcloud/106267509
수정한 부분은
-게스트 로그인 자동 (한번 돌릴필요 없음)
-api 호출 중간에 쉬는 시간 줄임
-로그에 횟수와 수집율만 나오도록 변경
-스텟 배열 값 수정
-소요 시간 표시
원본과 큰차이는 없고 그냥 한번 해보고 싶어서 해본거라 원본을 쓰시는걸 추천드립니다.
크롬에서만 작동 테스트 해봤습니다.
크롬 개발자 도구 단축키: Ctrl + Shift + j 또는 F12
const sleep = ms => new Promise(r => setTimeout(r, ms * 1000)); let token = localStorage.getItem('guest_token'); const guestLogin = async () => { const response = await fetch('https://yuntu-steinsgate-api.neuralcloud.co.kr/guest_login', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({}), }); const data = await response.json(); token = data.data.account.token; localStorage.setItem('guest_token', token); }; const step = async () => { let max = 20; const attribute = {}; for (let i = 1; i <= 3; i++) { const value = Math.floor(Math.random() * max); max -= value; attribute[i] = value; } attribute[4] = max; const startResponse = await fetch('https://yuntu-steinsgate-api.neuralcloud.co.kr/rand_start', { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: token, }, body: JSON.stringify({ init_attribute: attribute, }), }); const startData = await startResponse.json(); await sleep(0.1 + Math.random()); const list = startData.data.list; const startEvent = list[Math.floor(Math.random() * list.length)]; const playResponse = await fetch('https://yuntu-steinsgate-api.neuralcloud.co.kr/play', { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: token, }, body: JSON.stringify({ start_event: startEvent }), }); const playData = await playResponse.json(); const player = playData.data.player; console.log(`횟수: ${player.play_count}회, 수집률: ${player.collection_rate}%`); await sleep(0.5 + Math.random()); return player.collection_rate; }; (async () => { console.time('소요시간'); try { if (!token) { await guestLogin(); } let rate = 0; while (rate < 80) { rate = await step(); } console.timeEnd('소요시간'); alert('80% 수집 완료!'); } catch (e) { console.timeEnd('소요시간'); alert(`실패 : ${e}`); } })();