원본 : 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}`);
}
})();