Bondage Studio Bondage Studio
☰ 文档

工作原理

BCXIR 的存储模型与运行时行为。

本页描述 BCXIR 的存储模型与运行时行为。这属于参考资料,常规使用并不需要阅读。

存储

BCXIR 把自己的数据与 BCX 分开保存。

制作者注册表(你自己的道具规则),按你的成员编号作为键:

localStorage["BCXIR_registry_<MemberNumber>"]

穿戴者缓存(你收到的远端制作者响应):

localStorage["BCXIR_rule_cache_<MemberNumber>"]

设置(BC 扩展设置):

Player.ExtensionSettings.BCXIR

本地设置备份:

localStorage["BCXIR_<MemberNumber>_backup"]

BCXIR 不会把规则 payload 存进 Craft.Description。旧的 [BCXIR:v1:<encoded>] 描述标记已不再支持。BCXIR 也绝不写入 Player.ExtensionSettings.BCX

运行时:穿戴道具时应用规则

当某件匹配的制作道具被穿戴时,BCXIR 根据道具的制作者进行分流:

  • 由本地玩家制作 → 读取本地注册表并应用。
  • 由他人制作 → 检查本地缓存
    • 命中缓存 → 应用缓存的 payload(以缓存的制作者身份;见权限模式)。
    • 未命中 → 向 item.Craft.MemberNumber 请求 payload,然后进入冷却。只接受制作者的响应。

规则来源元数据会贯穿扫描过程,使每个来源以正确的身份应用:

  • 注册表来源以自己身份应用。
  • 缓存来源以缓存的制作者身份应用。
  • 未缓存的远端道具仅请求 payload(并退避)。

被管理规则所用的发送者会被记录下来,以便后续的恢复 / 删除使用相同的发送者上下文。

通过 BCX 保守地应用

BCXIR 通过 BCX 自身的处理器来应用和移除规则,并对一切非自己创建的内容保持谨慎:

  • 规则应用到穿戴道具的本地玩家。
  • 已存在的非 BCXIR BCX 规则不会被覆盖。
  • 道具移除时,BCXIR 管理的规则会被保守地恢复或删除
  • 如果某个被管理规则在 BCXIR 之外被修改,BCXIR 会释放管理,而不是与外部改动对抗。

临时角色

BCXIR 出于两类目的使用短生命周期、纯本地的角色。它们都不会在房间内绘制、不会同步到服务器,且事后都会被清理:

  • 编辑角色BCXIR Authoring)—— 在你编辑某道具规则时支撑虚拟 BCX 规则编辑器。一个虚拟 BCX 通信层会拦截目标为虚拟成员编号的 BCX 隐藏查询消息,并由内存中的规则存储进行响应。
  • 最小制作者角色 —— 仅在应用缓存的离线制作者规则时插入,使 BCX 能解析发送者以进行权限检查。采用引用计数,仅用于本地检查。
  • 操作者角色 —— 由请使用我高级模式在查询批处理期间使用。

失败即停的保证

BCXIR 宁可什么都不做,也不做错事。它会在以下情况失败即停:

  • 远端响应并非来自道具制作者。
  • 离线制作者没有缓存。
  • 制作者成员编号缺失,或 payload 损坏。
  • BCX 隐藏查询被拒绝或超时。

编程访问与源码结构见公共 API 与开发