匿名模式对我无效_如何生效

本文档说明如何把「匿名模式对你无效」这个选项真正注册成可勾选控件,并让它对装了 BiaoGe 本体的团员生效。方式上与「蓝龙 CD 伪装」类似:不改广播数据、不改他人视角,只在自己客户端显示层做覆盖。

一、背景:选项原本「只存在于文案中」

更新日志提到有「匿名模式对你无效」选项,但原代码里它只注册了语言文案,没有注册成控件

  • Core/Options.luaontextDB 里有 L["匿名模式对你无效"] 的标题与说明;
  • auctionCheckButtons 配置表里没有对应的 name = "noAnonymous" 项;

因此游戏内插件设置界面找不到这个勾选框。本修改把它真正注册出来。

二、修改 1:在 Options.lua 注册控件

1.1 加入文案(标题 + 说明 + 注意)

-- Core/Options.lua ~2525,ontextDB 表内
noAnonymous = {
    L["匿名模式对你无效"],
    L["勾选后,在竞拍过程中,匿名对你无效,你将可以直接看到实际出价人,不管你是团长还是团员。"],
    " ",
    L["注意:该选项仅在装了BiaoGe插件本体(内置拍卖窗口)时生效,不依赖任何外部WA光环。"]
},

1.2 加入选项配置项

-- Core/Options.lua ~2584,auctionCheckButtons 表末尾
{ name = "noAnonymous", default = 0 },

机制说明(与插件其它开关一致):

  • auctionCheckButtons 里每项会name 自动ontextDB[name] 取标题/说明生成勾选框;
  • 同时生成 BiaoGe.options["noAnonymous"](勾选状态,0/1)和 BG.options["buttonnoAnonymous"](控件引用)。

三、修改 2:在 Auction.lua 让覆盖生效

匿名显示靠的是每个窗口对象 f.mod(值为 "normal""anonymous")。我们只要在本地把 f.mod 强制成 "normal",WA / 内置窗口就会按非匿名渲染出真实出价人。

3.1 新建拍卖时立即覆盖

-- Core/Module/Auction.lua ~1447,BG.HookCreateAuction 末尾
-- 匿名模式对你无效:本地强制把该拍卖窗口按非匿名显示(覆盖WA读取的f.mod)
if BiaoGe.options.noAnonymous == 1 then
    f.realMod = f.mod          -- 备份真实 mod
    f.mod = "normal"           -- 强制非匿名显示
end

3.2 勾选框实时切换所有进行中窗口

为了让玩家在拍卖进行中勾选/取消也能立即生效,新增一个 BG.Init2 钩子,给勾选框挂 OnClick

-- Core/Module/Auction.lua ~1701,在 BG.Init2 结束处后新增
-- 匿名模式对你无效:选项勾选时实时覆盖所有正在进行的拍卖窗口
BG.Init2(function()
    local bt = BG.options and BG.options["buttonnoAnonymous"]
    if not bt then return end
    local function ApplyNoAnonymous()
        local on = BiaoGe.options.noAnonymous == 1
        for _, f in pairs(_G.BGA.Frames or {}) do
            if on then
                f.realMod = f.realMod or f.mod
                f.mod = "normal"
            elseif f.realMod then
                f.mod = f.realMod      -- 取消勾选时还原真实 mod
                f.realMod = nil
            end
            if f.Update then f:Update() end   -- 立即刷新显示
        end
    end
    bt:HookScript("OnClick", function()
        BG.After(0, ApplyNoAnonymous)
    end)
end)

四、生效方式

  1. 重新加载游戏:/reload
  2. 打开插件设置 → 「自动拍卖」分区,会看到「匿名模式对你无效」勾选框。
  3. 勾选后:
    • 之后新建的拍卖窗口:本地直接按非匿名显示真实出价人;
    • 进行中的拍卖窗口:勾选瞬间立即全部刷新为真实出价人;
    • 取消勾选:还原为匿名显示。

五、影响范围(与蓝龙CD伪装一致原则)

  • 只改本地显示层,不影响发出去的 StartAuction 广播数据;
  • 不影响其他团员看到的样子(他们仍按自己的设置/匿名模式显示);
  • 不影响团长/ML 记账(团长原本就能看到真实出价人);
  • 生效前提是装了 BiaoGe 插件本体(内置拍卖窗口),不依赖任何外部 WA 光环。

六、相关文件改动清单

  • Core/Options.lua
    • ontextDB 新增 noAnonymous 文案(~2525 行)
    • auctionCheckButtons 新增 { name = "noAnonymous", default = 0 }(~2584 行)
  • Core/Module/Auction.lua
    • BG.HookCreateAuction 末尾新增本地 f.mod 覆盖(~1448 行)
    • 新增 BG.Init2 钩子实现勾选框实时覆盖所有进行中窗口(~1703-1719 行)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注