diff --git a/mcbbs/vending-machine.user.js b/mcbbs/vending-machine.user.js index 98a19e2..6a4f7ce 100644 --- a/mcbbs/vending-machine.user.js +++ b/mcbbs/vending-machine.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name MCBBS自动售卖机 // @namespace https://miaowoo.cc/ -// @version 0.3 +// @version 0.5 // @description 自动售卖道具 // @author MiaoWoo // @match https://www.mcbbs.net/home.php?mod=magic** @@ -42,25 +42,46 @@ async function myboxAction() { await sendOrderAction(() => window.showWindow('magics', 'home.php?mod=magic&action=mybox&operation=give&magicid=32', 'get', 0)) } - async function lowStockNotify() { - await fetch('https://reward.yumc.pw/mcbbs/lowStockNotify').then(r => r.json()) + async function updateStock() { + let serverBump = document.getElementById('magic_mcbbs_mcserver_plus:serverBump') + let stock = 0 + if (serverBump) { + stock = serverBump.nextElementSibling.nextElementSibling.children[0].innerText + await fetch(`https://reward.yumc.pw/mcbbs/updateStock/stock/${stock}`).then(r => r.json()) + } + return stock } - async function clearOrderCache() { - await fetch('https://reward.yumc.pw/mcbbs/clearOrderCache').then(r => r.json()) + async function lowStockNotify(stock, order_id, goods_amount) { + await fetch(`https://reward.yumc.pw/mcbbs/lowStockNotify/stock/${stock}/order_id/${order_id}/goods_amount/${goods_amount}`).then(r => r.json()) } - async function duplicateNotify(order_id) { - await fetch('https://reward.yumc.pw/mcbbs/duplicateNotify/order_id/' + order_id).then(r => r.json()) + async function clearOrderCache(order_id) { + await fetch('https://reward.yumc.pw/mcbbs/clearOrderCache/order_id/' + order_id).then(r => r.json()) + } + async function duplicateNotify(order_id, goods_amount) { + await fetch(`https://reward.yumc.pw/mcbbs/duplicateNotify/order_id/${order_id}/goods_amount/${goods_amount}`).then(r => r.json()) + } + async function handleLowStock(order, stock) { + if (order.allowAutoBuy) { + await clearOrderCache(order.order_id) + await sleep(1500) + location.href = '/home.php?mod=magic&action=shop' + } else { + await lowStockNotify(stock, order.order_id, order.goods_amount) + await sleep(120000) + location.href = '/home.php?mod=magic&action=mybox' + } } async function sendOrderAction(openFn, back = false) { - let timeoutTask = setTimeout(() => { location.href = '/home.php?mod=magic&action=mybox' }, 30000) + let timeoutTask = setTimeout(() => { location.href = '/home.php?mod=magic&action=mybox' }, 90000) let count = 0 + let stock = updateStock() let result = await fetch('https://reward.yumc.pw/mcbbs/needSendOrder').then(r => r.json()) - if (result.code != 200) { + if (result.code != 200 && result.data.order_id) { if (++checkTimes > 30 || back) { location.href = '/home.php?mod=magic&action=mybox' } clearTimeout(timeoutTask) - return setTimeout(() => sendOrderAction(openFn), 15000) + return setTimeout(() => sendOrderAction(openFn), 2000) } try { openFn() } catch (ex) { } let order = result.data @@ -69,17 +90,7 @@ while ((username = jq('#selectedusername')[0]) == undefined) { if (count > 3) { console.log('检测窗口超时!') - if (!back) { - if (order.allowAutoBuy) { - await clearOrderCache() - await sleep(1500) - location.href = '/home.php?mod=magic&action=shop' - } else { - await lowStockNotify() - await sleep(10000) - location.href = '/home.php?mod=magic&action=mybox' - } - } + if (!back) { await handleLowStock(order, stock) } return } await sleep(800) @@ -106,16 +117,7 @@ count++ } if (error == "抱歉,操作数量不合法") { - if (order.allowAutoBuy) { - await clearOrderCache() - await sleep(1500) - location.href = '/home.php?mod=magic&action=shop' - } else { - lowStockNotify() - await sleep(10000) - location.href = '/home.php?mod=magic&action=mybox' - } - return + return await handleLowStock(order, stock) } try { let finish = await fetch('https://reward.yumc.pw/mcbbs/updateOrder', {