
请配合 th-bingo服务端 和 th-bingo客户端 食用
目前只有Windows版本
支持的作品
| 作品 |
状态 |
备注 |
| th06 红魔乡 |
✅ |
无符卡练习模式,支持日文版(東方紅魔郷.exe) |
| th07 妖妖梦 |
✅ |
支持符卡练习 |
| th08 永夜抄 |
✅ |
支持符卡练习,12种机体 |
| th09 花映塚 |
❌ |
对战游戏,无符卡 |
| th10 风神录 |
✅ |
|
| th11 地灵殿 |
✅ |
|
| th12 星莲船 |
✅ |
|
| th13 神灵庙 |
✅ |
|
| th14 辉针城 |
✅ |
|
| th15 绀珠传 |
✅ |
|
| th16 天空璋 |
✅ |
|
| th17 鬼形兽 |
✅ |
|
| th18 虹龙洞 |
✅ |
|
所有支持的作品均同时支持日文原版和中文版(包括通过 thcrap 启动的版本)。
编译
go build -o th-bingo-tools.exe
运行
运行后监听 9760 端口,访问 ws://127.0.0.1:9760/ws 即可获取选卡、收卡的回调。
th-bingo-tools.exe -h 可以查看更多命令行参数的用法
回调就是一个json,如下所示:
{
"game": 18,
"id": 1,
"event": 1,
"mode": 1,
"role": "Reimu",
"rank": "L",
"score": 123450
}
各字段含义如下:
| 字段 |
类型 |
含义 |
| game |
int |
作品号(6、7、8、10-18) |
| id |
int |
符卡id,游戏里可以看到 No.xx |
| name |
str |
符卡名,不一定有的字段,也不一定是中文,不建议使用 |
| event |
int |
事件,0-进入符卡,1-收取符卡 |
| mode |
int |
0-游戏模式或Practice Start 1-Spell Practice |
| role |
str |
角色的英文名(见下方表格) |
| rank |
str |
难度(E、N、H、L、EX、PH) |
| score |
int |
符卡最高分数,一般只有Spell Practice才有,没有分数则没有此字段 |
角色的英文名:(对于有不同子机的作品,在英文名后加字母表示,例如:ReimuA、SakuyaB。特别地,天空璋不区分子机,鬼形兽用WOE三个字母表示三个支援。)
| 英文名 |
含义 |
备注 |
| Reimu |
灵梦 |
|
| Marisa |
魔理沙 |
|
| Sakuya |
咲夜 |
|
| Sanae |
早苗 |
|
| Youmu |
妖梦 |
|
| Reisen |
铃仙 |
仅在绀珠传中有 |
| Cirno |
琪露诺 |
仅在天空璋中有 |
| Aya |
射命丸文 |
仅在天空璋中有 |
| Yukari |
紫 |
仅在永夜抄中有 |
| Alice |
爱丽丝 |
仅在永夜抄中有 |
| Remilia |
蕾米莉亚 |
仅在永夜抄中有 |
| Yuyuko |
幽幽子 |
仅在永夜抄中有 |
| ReimuYukari |
结界组 |
仅在永夜抄中有 |
| MarisaAlice |
咏唱组 |
仅在永夜抄中有 |
| SakuyaRemilia |
红魔组 |
仅在永夜抄中有 |
| YoumuYuyuko |
幽冥组 |
仅在永夜抄中有 |
开发相关
总体思路就是用CE找一下存放符卡history数据的内存,然后找到规律。也可以参考 thprac 仓库中的内存结构体定义。
th06/th07 的内存布局与 th10+ 不同:符卡数据是全局数组而非按角色分组,使用 uint16 计数。th06 的 GameManager 位于绝对地址 0x69BCA0,th07 的位于 0x626270。详见 thprac 的 thprac_th06.h 和 thprac_th07.h。
th10+ 的例子:
https://github.com/CuteReimu/th-bingo-tools/blob/5725a77cd77025b3ad1f8a8d956b382be9a4db58/listener_th10.go#L4-L15
上述代码的意思是:从进程的基址开始,往后0x7783C个字节的位置,存放了指向角色数据结构体的指针,我们利用这个指针找到这个结构体后,再向后移动20个字节的位置,就是第一个角色(灵梦A)的id;而往后0x5A4个字节的位置,就是第一个角色的符卡数据的结构体的起始地址。每个角色的数据距离上一个角色的数据0x437C个字节的距离。用CE找到这些地址之后,我们把内容读出来即可。