LUACN论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
热搜: YJWOW MagicStone BoL
查看: 1193|回复: 54

周围怪物数量统计进阶之战斗日志中的sourceFlags和destFlags介绍

  [复制链接]
发表于 2025-7-30 00:44:16 | 显示全部楼层 |阅读模式
本帖最后由 吾奶常煽赵子龙 于 2025-7-30 12:46 AM 编辑

之前一篇文章介绍了一种不太完美的统计周围怪物数量的方法。里面我们判断sourceGUID/destGUID是怪物还是自己或队友的方法是遍历队伍/团队成员的GUID,这种方式是我们最容易想到的,但是很笨。

其实有更加简单的方法,就是通过sourceFlags/destFlags来判断(后面统称flags)。

注意:这里讲的标志位结构是基于3.3.5版本的。
注意:这里讲的标志位结构是基于3.3.5版本的。
注意:这里讲的标志位结构是基于3.3.5版本的。

战斗日志中的 flags 是一个位掩码值,包含单位和关系的多个信息。与队友判断相关的标志位如下:
标志位(十六进制) 宏定义(常用) 含义
0x00000001 COMBATLOG_OBJECT_AFFILIATION_MINE 玩家自己
0x00000002 COMBATLOG_OBJECT_AFFILIATION_PARTY 同小队成员(队友)
0x00000004 COMBATLOG_OBJECT_AFFILIATION_RAID 同团队成员(队友)
0x00000010 COMBATLOG_OBJECT_REACTION_FRIENDLY 友方单位(包括NPC)
(这里只列出了部分标志位)


每个flags由四种标志位组成:单位隶属关系、单位类型、单位阵营、单位控制者。

比如:
[Lua] 纯文本查看 复制代码
-- 是否是自己
local isSelf = bit.band(flags, 0x00000001) ~= 0;

-- 是否是宠物
local isPet = bit.band(flags, 0x00001000) ~= 0;

-- 是否是自己的宠物
local isMyPet = bit.band(flags, bit.bor(0x00000001, 0x00001000)) ~= 0;


下面是我整理的一份可以直接使用的标志位判断工具,如果错误欢迎指正。

CombatFlags.lua

游客,如果您要查看本帖隐藏内容请回复


这里只是做了一个简单介绍,详细的可以看API文档。

标志位的定义在 Blizzard_CombatLog.lua 也有详细的定义,感兴趣的可以去查看源码。



回复

使用道具 举报

发表于 2025-7-30 10:37:35 | 显示全部楼层
龙哥 出品 必须是精品 支持下
回复 支持 反对

使用道具 举报

发表于 2025-7-30 19:46:00 | 显示全部楼层
fgdsgfgfgfd公对公第三个第三方GV的谁 公会飞

评分

参与人数 1伸手费 -100 收起 理由
老血 -100

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2025-7-31 09:38:36 | 显示全部楼层
先赞后看
回复 支持 反对

使用道具 举报

发表于 2025-7-31 10:03:39 | 显示全部楼层
当我怀疑世界时,你给过我答案
回复 支持 反对

使用道具 举报

发表于 2025-8-2 14:28:04 | 显示全部楼层
来来来,学习一下大神
回复 支持 反对

使用道具 举报

发表于 2025-8-2 21:59:18 | 显示全部楼层
谢谢分享谢谢分享
回复 支持 反对

使用道具 举报

发表于 2025-8-3 10:47:52 | 显示全部楼层
谢谢,。,。。。。。。。
回复 支持 反对

使用道具 举报

发表于 2025-8-4 14:56:20 | 显示全部楼层
谢谢分享,学习了
回复 支持 反对

使用道具 举报

发表于 2025-8-4 17:30:58 | 显示全部楼层
又有高级锁的东西可以看了!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

小黑屋|手机版|Archiver|LUACN论坛

GMT+8, 2026-10-10 06:36 AM , Processed in 0.097537 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表