请教函数大佬!!!!
在不检测当前目标或目标的目标或焦点的目标的情况下队伍或者团队成员里法师、术士、牧师,这三种职业受到怪物直接攻击时(就是OT了),对其释放保护之手。
这该怎么写啊?
飞扬 发表于 2024-3-9 11:28 PM
啥意思啊?大佬~~~~~~~~
我们的普通解锁期做不到 高级解锁 zsbd{:5_251:} 电动男朋友 发表于 2024-3-9 05:41 PM
高级解锁 zsbd
啥意思啊?大佬~~~~~~~~ 不用高级函数
自带函数就可以了
local Unit = BeeGroupMaxScript('class=="牧师"',"BeeUnitHealth(unit,nil,1)","party")
if Unit and BeeIsRun("保护之手",Unit)then
BeeRun("保护之手",BeeGetVariable("BeeGroupMaxInfo_Unit"))
end
lulin155 发表于 2024-3-10 12:51 AM
不用高级函数
自带函数就可以了
local Unit = BeeGroupMaxScript('class=="牧师"',"BeeUnitHealth(unit,n ...
似乎并不是楼主需要的 最简单的就是定义一个焦点目标,然后把focus参数传到BeeGroupCountScript()第二个属性中做仇恨级别的判断,怎奈你这需求有点特殊。由于没有进阶函数,只好参考前辈的模板来实现。
正常的东西写腻歪了,就研究这些奇奇怪怪的东西{:5_248:}
原理:获取战斗日志中全部怪物的GUID,找出血量最多的定义为boss,如果布甲OT了,就给OT的目标上保护之手。
--'初始化创建框体'
F = F or CreateFrame("Frame")
--'注册事件'
F:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
F:RegisterEvent("PLAYER_REGEN_ENABLED")
local lastUpdate = GetTime()
local targets = {}
local targetsTable = {}
local maxHealth = 0
local bossName = ""
F:SetScript("OnEvent", function(self, event, ...)
if event == "COMBAT_LOG_EVENT_UNFILTERED" then
local timestamp = ...
local currentTime = GetTime()
local playerGUID = UnitGUID("player")
local arg = {...}
local TargetGUID = arg
local TargetName = arg
local str=string.find(arg,"0x0")
if TargetGUID ~= playerGUID and TargetGUID ~= "0x0000000000000000" and not str then
if currentTime - lastUpdate >= 1then
local totalTargets = table.getn(targets)
if totalTargets > 0 then
local arrhp={}
for k,v in pairs(targetsTable) do
BeeRun("/target " .. TargetName)
--'比较血量,选出最大血量为boss'
if(maxHealth<UnitHealth("target")) then
maxHealth = UnitHealth("target")
bossName = TargetName
end
end
lastUpdate = currentTime
wipe(targets)
end
end
if not tContains(targets, TargetGUID) then
tinsert(targets, TargetGUID)
tinsert(targetsTable,arg)
end
end
--print(bossName)
elseif event == "PLAYER_REGEN_ENABLED" then
--'清空目标表'
wipe(targets)
end
end)
--'团队框架'
grouptype=""
if GetNumRaidMembers()>0
then
grouptype="raid"
else
grouptype="party"
end
local m,u = BeeGroupCountScript('BeeRange(unit)<=40 and class=="牧师" or class=="术士" or class=="法师"','UnitName(BeeUnit(bossName).. "-target") == UnitName(unit)',grouptype)
if m>0 and BeeIsRun("保护之手",u) and BeeUnitBuffTime("保护之手",u)<1 then
BeeRun("保护之手",u)
end
z22904220 发表于 2024-3-12 08:47 PM
最简单的就是定义一个焦点目标,然后把focus参数传到BeeGroupCountScript()第二个属性中做仇恨级别的判断, ...
膜拜大佬{:5_250:}~~~~~~~~~~~ z22904220 发表于 2024-3-12 08:47 PM
最简单的就是定义一个焦点目标,然后把focus参数传到BeeGroupCountScript()第二个属性中做仇恨级别的判断, ...
{:5_236:}这这这太高端了 z22904220 发表于 2024-3-12 08:47 PM
最简单的就是定义一个焦点目标,然后把focus参数传到BeeGroupCountScript()第二个属性中做仇恨级别的判断, ...
大佬写的代码太高端了,再请教该如何修改一下
获取战斗日志中全部怪物的GUID,不管是BOSS还是小怪的目标 是法师、术士、牧师,就对其释放保护之手。
比如ICC老2传销女召唤的几只小怪,T没有第一时间全部拉完的话,一巴掌能把布甲拍死,还有老4召唤的血兽也能啃死布甲,还有红玉圣殿的小怪等等.....
我想要实现的功能是:场面上有多只怪物的情况下,检索所有怪物的目标,如果其中一只目标是布甲职业,能第一时间甩出保护救人一命
因为是我是治疗职业,我的焦点是T,我的当前目是团队成员,所以 使用target、focustarget、targettarget,这样的函数来检索场面上所有怪物的目标不太方便,也不够智能
页:
[1]
2