追踪多个敌人单位的魔兽世界弱点提示插件。
2015-5-17 19:21:6
收藏:0
阅读:124
评论:0
在《魔兽世界》中,我一直在制作一个 Weakaura,用于追踪玩家击杀的敌对单位数量。其中一个主要问题是,在小组中时,“COMBAT_LOG_EVENT_UNFILTERED”强制光环在小组中的任何人执行动作时都会触发,这可能会导致很多掉帧。我能够找到的另一种选择是“COMBAT_LOG_EVENT”,然而,它不会在敌人死亡时触发,因此不会从列表中移除。
我的问题是:有没有办法在除 UI 线程之外的线程上收集此数据,以防止掉帧?在另一个线程中收集此数据时,数据能否用于向用户显示信息?
以下是当前使用的触发器(这些都按预期工作):
触发器1:
类型-自定义
事件类型-事件
事件- COMBAT_LOG_EVENT_UNFILTERED
Custom Trigger:
function(...)
ADDS = ADDS or {}; -- Where enemy units are stored
local _, _, event, _, src, _, _, _, dest, _, _, _ = select(1, ...);
local player = UnitGUID("player");
-- Attempts to only read data coming from the player casting harmful abilities
if ((event == "SPELL_DAMAGE") and (src == player)) then
-- Checks if the enemy unit is already being tracked and that it is NOT
-- a part of your group (prevents friendly fire events from adding a friendly
-- unit to this list)
if ((not tContains(ADDS, dest)) and (not tContains(GROUP, dest))) then
table.insert(ADDS, dest);
end
elseif event=="UNIT_DIED" then -- Remove a unit if it has died
for i = #ADDS, 1, -1 do
if ADDS[i] == dest then
table.remove(ADDS, i);
end
end
end
return true;
end
上述代码块是掉帧的原因。下一个触发器仅用于在战斗开始或结束时重置列表(相当确定此块中没有导致掉帧的东西,但还是想包括它以防万一):
触发器2:
类型-自定义
事件类型-事件
事件- PLAYER_REGEN_DISABLED,PLAYER_REGEN_ENABLED
function(...)
GROUP = GROUP or {};
local size = GetNumGroupMembers();
if (size == 0) then
GROUP = {};
end
if (size ~= #GROUP and size ~= 0) then
for i = 1, size do
local name = GetRaidRosterInfo(i);
if (name ~= nil) then
local guid = UnitGUID(name);
if (not tContains(GROUP, guid)) then
table.insert(GROUP, guid);
end
end
end
end
ADDS = {};
return true;
end
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法