舞萌DX 的游戏助手
宗旨:让舞萌DX的玩家能够更好地游玩游戏,获得快乐。
AI真的很好用你知道吗
--- ## 这是什么 WaHappy 是一个用 **Python 纯网络方式**与舞萌DX(SDGB 国服)游戏服务器交互的工具集。 它不修改游戏、不注入进程,只是把游戏客户端做的事用脚本重做一遍: 扫码登录 → 取数据 → 上传成绩 → 登出。 > 协议实现全部来自反编译源码与真机网络日志的双向验证, > 每个关键常量在代码注释里都标了**源码行号**。 --- ## 当前状态:v0 | 脚本 | 状态 | |---|---| | **`upsert.py`** | ✅ **可用** —— 扫码登录 → 上传一局成绩 → 落库回查 → 登出 | | **`buy_ticket.py`** | ✅ **可用** —— 购买功能票 | | **`use_ticket.py`** | ✅ **可用** —— 消耗当前持有的功能票 | | **`reincarnate.py`** | 🔧 已实现(**未实跑**)—— 账号数据迁移(转生) | | **`netdelivery.py`** | ✅ **可用** —— 查 / 下 `.app` / `.opt` 更新包(只读) | | `api/` 下 40+ 个接口模块 | 🔧 已实现并通过零网络自检,但**未全部在真机上验证过** | **文档**在 [`docs` 分支](https://git.fragrance.moe/Txiaochen/wahappy/src/branch/docs),见文末[文档索引](#文档索引)。 --- ## 一个教训:别把一件事分段交给 AI v0 的开发过程中,我反复把同一个目标拆成小段丢给 AI,结果: | 项目 | Token 消耗 | |---|---| | **v0 有效开发** | **473M+** | | 含中途废弃的分支项目 | **1137.5M** | **这 1137.5M 里有一大半是浪费掉的。** 真正的教训是: > **不要把一个东西分段交给 AI,而是直接设定一个目标,然后让它自己跑完。** 分段交接会让 AI 反复丢失上下文、重复劳动、在已经解决的问题上打转 —— 而一个清晰的目标 + 足够长的执行窗口,反而更快也更省。 --- ## 项目框架 ``` WaHappy/ ├── config.py 运行时可配置项(机台标识 / 歌曲数据 / 日志级别)★ 需自建 ├── config.py.example 配置模板 ├── upsert.py ★ 主脚本:扫码登录 → 上传成绩 → 登出 ├── buy_ticket.py 主脚本:购买功能票 ├── use_ticket.py 主脚本:消耗当前持有的功能票 ├── reincarnate.py 主脚本:账号数据迁移(转生) ├── netdelivery.py 主脚本:查 / 下 .app / .opt 更新包 ├── selftest.py 零网络自检(249 项,判据 = 源码 + 真机日志) │ ├── api/ ★ 所有与服务器交互的模块(一个接口一个脚本) │ ├── __init__.py 统一导出 + 日志自动跟踪 │ ├── maimai_net.py 网络核心(AES / deflate / URL 混淆 / Cookie) │ ├── log_setup.py 日志(INFO / DEBUG 双模式) │ ├── upsert_user_all.py 上传成绩(36 节点 / 110 字段 / 差分) │ ├── get_need_user_data.py 结算快照编排 + 落盘 data/