引
在前段时间,舞萌更新 DX2026 时,有个特殊的搭档liz,也许是因为 SEGA/ 华立在乎kaleidcsope模式的特殊性,也可能是因为过于泛滥,在七月 22 日,华立对国服非法获取 liz 搭档的账号全部发了 bs1 封禁,上一次发生这种官方下场声明发 bs 大概还是 2024 的集章卡乐曲latent kingdom,那么相信很多人对国服的封禁机制有一些好奇,甚至有些试图以科技方式修改掉 bs1,本文就简单讲下,关于 banState 你想知道的那些事情
什么是 banState
国服账号有一个叫 banState 的字段,也就是封禁状态,由服务器下发
| 值 | 名称 | 效果 |
|---|---|---|
0 | 正常 | 无任何限制 |
1 | 警告(bs1) | 弹警告窗,等 10 秒,可以进游戏,但限制游戏功能 |
2 | 封禁(bs2) | 弹封禁窗,等 10 秒,踢回扫号页面,无法游玩 |
其他值客户端按正常处理
这个字段由服务器在你扫号时返回,客户端只执行
刷卡时发生了什么
扫号后,机台会向服务器请求一次 preview 数据,响应里就带着 banState,客户端拿到这个值之后,走一套状态机来决定你号怎么被处理
正常(0):直接进游戏
警告(bs1):弹出警告窗口,,等满 600 帧(60fps 下 10 秒)窗口自动关闭,之后放行进选曲界面
封禁(bs2):弹出封禁窗口,同样等 10 秒。关闭后直接调用 Context.SetState(StateType.ConfirmEntry),把你踢出去不让玩
bs2 账号的全量数据 GetUserDataApi 照常下载,数据下载不会被拦截,只是下载了你也玩不了
游戏限制
警告和封禁账号进入游戏后(bs2 进不来,但如果以任何方式绕过入口),会触发三类判断,判断条件统一是 BanState != 0,且检查双人 任何一侧被标记,双方都受限
1. 友人对战禁用
if (!IsAnyUserWarningState()){ AddVsGhost(...); AddMapGhost(...); AddBossGhost(...); AddReliefGhost(...);}如上,友人对战等玩法会直接被禁用
2. kaleidxscope 进度被锁定
万花镜进度会被强制回退到 FoundCenterTower 阶段,CenterTowerCleared 及以上的进度一律不显示:
if (kaleidxScopePhase >= KaleidxScopePhase.CenterTowerCleared && IsEntryBanUser()){ kaleidxScopePhase = KaleidxScopePhase.FoundCenterTower;}3. LEGEND
UnlockMusicProcess.IsAnyLegend 会检查所有玩家的 BanState,只要有一方非零就返回 false :不计入 LEGEND 段位,传导作废
纯服务器控制
没有任何手段去更改 bs 状态,因为这玩意是服务器侧控制的,哪怕通过 mitm 把传下来的 bs 状态改成 0,也没法彻底改变服务器里的值,纯粹自欺欺人
结
| bs0 正常 | bs1 警告 | bs2 封禁 | |
|---|---|---|---|
| 进游戏 | ✅ | ✅(罚站 10s) | ❌ |
| 友人对战 | ✅ | ❌ | ❌ |
| 万花筒进度 | 正常 | 锁定 | 锁定 |
| LEGEND | ✅ | ❌ | ❌ |
误封等误解
