Автоматизация печенек
unknown
javascript
2 years ago
5.3 kB
6
Indexable
// Настройки скрипта
const speed = 1000 // 1000 = 1 секунда, 2000 = 2 секунды и т.д. рекомендуется не менее 200мс
const startCookieLevel = 1 // Начальный уровень печенья
const finalCookieLevel = 50 // Конечный уровень печенья (это печенье будет удалено в конце цикла)
const repeatTimes = 10 // Сколько раз вы хотите выполнить задание
// Service variables (DO NOT CHANGE)
let iteration = 1;
// Buy new cookies (DO NOT CHANGE)
async function shop() {
return new Promise((resolve) => {
const cookies = document.querySelectorAll('.menu-shop-item img:not([src^="data:"])')
const numbers = []
console.log('Processing buy new cookies...')
for (let i = startCookieLevel - 1; i < finalCookieLevel; i++) {
const cookie = cookies[i]
const imageUrl = cookie.src
const regex = /\/(\d+)\./
const match = imageUrl.match(regex ?? 'null')
const number = match ? match[1] : null
if (number) {
numbers.push(number)
}
}
console.log('Buy new cookies: ', numbers)
// Start buying (DO NOT CHANGE)
numbers.forEach((number, index) => {
const element = document.querySelector(`img[src*="/${number}."]`)
// First level biscuit clicked twice (DO NOT CHANGE)
if (parseInt(number) === startCookieLevel) {
setTimeout(() => {
element.click()
setTimeout(() => {
element.click()
}, speed)
}, index * speed)
} else {
setTimeout(() => {
element.click()
}, index * speed)
}
})
setTimeout(() => {
resolve()
console.log(`Iteration #${iteration} completed`)
console.log('='.repeat(50))
}, numbers.length * speed)
})
}
// Call the function several times
(async function () {
for (let i = 0; i < repeatTimes; i++) {
await shop()
iteration++
}
console.log('All iterations completed')
})()
// Union all and delete final biscuit
async function swipeBiscuits() {
const biscuits = document.querySelectorAll('.biscuit-item')
biscuits.forEach((biscuit) => {
const biscuitNumber = extractBiscuitNumber(biscuit)
if (biscuitNumber) {
const targetBiscuitNumber = biscuitNumber
const targetBiscuit = document.querySelector(`.biscuit-icon-type-${targetBiscuitNumber}`)
if (targetBiscuit) {
const biscuitRect = biscuit.getBoundingClientRect()
const biscuitCenterX = biscuitRect.left + biscuitRect.width / 2
const biscuitCenterY = biscuitRect.top + biscuitRect.height / 2
const targetRect = targetBiscuit.getBoundingClientRect()
const targetCenterX = targetRect.left + targetRect.width / 2
const targetCenterY = targetRect.top + targetRect.height / 2
biscuit.dispatchEvent(
new MouseEvent('mousedown', {
bubbles: true,
cancelable: true,
clientX: biscuitCenterX,
clientY: biscuitCenterY,
})
)
biscuit.dispatchEvent(
new MouseEvent('mousemove', {
bubbles: true,
cancelable: true,
clientX: targetCenterX,
clientY: targetCenterY,
})
)
if (biscuitNumber === finalCookieLevel) {
const garbage = document.querySelector('#garbage.garbage-area')
if (garbage) {
const garbageRect = garbage.getBoundingClientRect()
const garbageCenterX = garbageRect.left + garbageRect.width / 2
const garbageCenterY = garbageRect.top + garbageRect.height / 2
biscuit.dispatchEvent(
new MouseEvent('mousemove', {
bubbles: true,
cancelable: true,
clientX: garbageCenterX,
clientY: garbageCenterY,
})
)
}
}
targetBiscuit.dispatchEvent(
new MouseEvent('mouseup', {
bubbles: true,
cancelable: true,
clientX: targetCenterX,
clientY: targetCenterY,
})
)
}
}
})
}
function extractBiscuitNumber(biscuit) {
const className = biscuit.className
const numberRegex = /biscuit-icon-type-(\d+)/
const match = className.match(numberRegex)
if (match) {
return parseInt(match[1])
}
return null
}
setInterval(swipeBiscuits, speed)Editor is loading...
Leave a Comment