源文件超过50行,已替换为不超过50行的伪代码。辅助函数为逻辑抽象,不直接执行。
1let stopRequested = false;23function requestStop() {4 stopRequested = true;5}67async function runAutoBet(settings) {8 stopRequested = false;9 const stats = createStats();10 let nextBet = settings.initialBet;1112 while (true) {13 const bet = await rollDice({ ...settings.game, amount: nextBet });14 stats.netProfit += bet.payout - bet.amount;15 stats.updateStreaks(bet);1617 const decision = evaluateStrategyBlocks(settings, stats, nextBet);18 nextBet = decision.nextBet;1920 // Dice自动展示:快速模式立即结束,否则等待400ms。21 if (!settings.instant) await delay(400);22 finishPresentation(bet.identifier);2324 if (stopRequested || decision.stop) break;25 if (hasReachedGameLimit(settings, stats)) break;26 if (nextBet > readAvailableBalance()) break;27 if (wouldExceedLossLimit(settings, stats, nextBet)) break;28 }29 autoState.set("idle");30}31// 整理正常继续/停止路径;请求错误由游戏状态机处理。已确认说明
- auto decide 只在已有 bet/history 时递减 gamesLeft(0不递减)。抓取余额与初始 snapshot,评估 ordered blocks、应用 handler,再检查 stopping。原 gamesLeft=1 时返回 limitReached,意味着最后一局结算后阻止下一局。
- 默认自动初始策略只装 reset-on-win/reset-on-loss;高级模式默认 Martingale:输后金额+100%、赢后重置。另内置 Delayed Martingale/Paroli/D Alembert,并支持保存、加载、条件块顺序移动与清理无效/重复ID。
- 共享 service wrapper 在parallelCasinoBet或触发event.type为done.invoke.decideOnNextBet时,失败后500ms重试;n从1开始,到10不再重试。此源码条件比“只重试parallel错误”更宽,不宜写成仅并行下注错误重试。
- 共享策略器使用ordered blocks、saved labels、load/save/reset/default strategies;初始advanced默认Martingale,与具体Dice组件分离复用。