蓝龙CD同步_如何伪装
本文说明一种”伪装”修改:让你在团队中广播给队友的蓝龙(世界BOSS)CD 状态固定为”无CD”,无论你本地实际打没打过。队友的显示完全来自你广播的 cd^bossID:num 消息里的值(1 = 有CD,0 = 无CD),因此只需改动你发出去的数据即可,本地 RaidCD 是否真的有CD 不影响队友所见。
说明:以下为修改思路与示例代码,未直接改动源码。需要生效时再按指示编辑
Core/Module/WorldBossCD.lua。
1. 唯一需要改动的位置
Core/Module/WorldBossCD.lua 里的 GetWorldBossCDMsg() 函数,约第 334–348 行:
function GetWorldBossCDMsg()
if BiaoGe[FBCD][realmID][player] then
for k, v in pairs(BiaoGe[FBCD][realmID][player]) do
if v.isWorldBoss then
local bossID = v.fbId
bossInfo[bossID] = 1 -- ← 这一行决定广播值(有CD)
end
end
end
local msg = "cd^"
for bossID, num in pairs(bossInfo) do
msg = msg .. bossID .. ":" .. num .. ","
end
return msg
end
bossInfo 在初始化时所有世界BOSS(蓝龙=116、卡扎克=117、末日行者=119、末日领主=118)都默认是 0,只有这里把”有CD”的条目设成 1。因此控制广播值的就是 bossInfo[bossID] = 1 这一行。
2. 方案 A:只伪装蓝龙(其他 BOSS 仍如实显示)
把 bossInfo[bossID] = 1 改成按 bossID 判断,遇到蓝龙(116)强制为 0:
if v.isWorldBoss then
local bossID = v.fbId
bossInfo[bossID] = (bossID == 116) and 0 or 1
end
效果:无论你打没打过蓝龙,队友那边蓝龙都显示”无CD”;卡扎克、末日行者、末日领主卡扎克照常显示你的真实状态。
3. 方案 B:所有世界 BOSS 都伪装成没打过
直接把 bossInfo[bossID] = 1 改成 bossInfo[bossID] = 0,或者直接删掉这行赋值(因为初始化本就是 0)。效果是你对所有队友来说,全部世界BOSS都显示”无CD”。
4. 对自己本地面板的影响与可选修改
上述改动只影响发送出去的数据。队友端 CHAT_MSG_ADDON 解析后 BG.worldBossRaidCD[sender][bossID] = 0,按钮显示绿底”无CD”,完全达成目的。
你自己面板的显示由 UpdateMyWorldBossCD()(约第 366–372 行)用本地 bossInfo 渲染,不受广播值影响:
local function UpdateMyWorldBossCD()
GetWorldBossCDMsg()
for bossID, cd in pairs(bossInfo) do
BG.worldBossRaidCD[player] = BG.worldBossRaidCD[player] or {}
BG.worldBossRaidCD[player][bossID] = cd
end
end
- 如果你自己也想让本地面板把自己看成”无CD”,把
UpdateMyWorldBossCD()里同样的赋值逻辑也改成 0 即可(其实它调用了GetWorldBossCDMsg(),只要方案 A/B 已生效,本地bossInfo也会是 0,本地面板自然跟着显示无CD,通常无需额外改)。 - 如果你只想”骗队友”而自己仍想看到真实状态,则不改动
UpdateMyWorldBossCD的本地逻辑即可(注意它复用GetWorldBossCDMsg,若要本地真实、对外伪装,需把对外广播与本地渲染拆成两套bossInfo来源,见第 6 节进阶)。
5. 生效范围与触发
- 进团时的
VersionCheck回复、人数变化的GROUP_ROSTER_UPDATE重发、本地世界BOSS变化时的补发,都会走同一个GetWorldBossCDMsg(),所以改这一处即全局生效,无需动其它发送逻辑。 - 队友若已在线,重发后会立即刷新;新进团的队友会在
VersionCheck后收到你的伪装数据。
6. 进阶:做成可随时切换的开关(可选)
如果以后想随时在”真实 / 伪装”之间切换,而不是写死,可加一个本地变量控制这行赋值,例如:
-- 在合适的位置定义,例如 BG.Init 内
BiaoGe.fakeBlueDragonNoCD = BiaoGe.fakeBlueDragonNoCD or false
然后:
if v.isWorldBoss then
local bossID = v.fbId
if bossID == 116 and BiaoGe.fakeBlueDragonNoCD then
bossInfo[bossID] = 0
else
bossInfo[bossID] = 1
end
end
再在选项界面加一个勾选框绑定 BiaoGe.fakeBlueDragonNoCD,即可通过界面开关控制是否伪装。这属于功能增强,基础需求只改第 2 / 3 节那一行即可满足。
注意事项
- 该伪装仅改变团队内插件显示的 CD 状态,不会也不能改变游戏服务器真实的副本锁定记录。
- 仅 titan / 60 服版本启用此功能(文件头
if not BG.IsTitan then return end),其它版本无此模块。 - 修改后建议
/reload重载界面,并在团队中确认队友侧显示符合预期。