Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions MY_Cataclysm/src/MY_CataclysmMain.lua
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,8 @@ local function UpdateTeamMonData()
if data.bCheckLevel then
v.nLevel = data.nLevel
end
v.szDisplayName = v.szDisplayName or data.szDisplayName
v.szDisplayName = v.szDisplayName and X.RenderTemplateString(v.szDisplayName, nil, -1, false, false)
v.nIcon = data.nIcon
table.insert(aBuff, v)
end
Expand Down
2 changes: 1 addition & 1 deletion MY_Cataclysm/src/MY_CataclysmParty.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1699,7 +1699,7 @@ function D.UpdateCharaterBuff(p, handle, tKeep)
local szCountdownKey = 'MY_CATACLYSM_' .. tBuff.dwID .. '_' .. tRule.szKey
FireUIEvent('MY_LIFEBAR_COUNTDOWN', dwCharID, 'BUFF', szCountdownKey, {
dwBuffID = tBuff.dwID,
szText = tBuff.szName,
szText = tRule.szDisplayName or tBuff.szName,
nLogicFrame = tBuff.nEndFrame,
col = tRule.colScreenHead or tRule.col,
nPriority = tItem.nPriority,
Expand Down
56 changes: 45 additions & 11 deletions MY_TeamMon/src/MY_TeamMon.lua
Original file line number Diff line number Diff line change
Expand Up @@ -868,7 +868,7 @@ function D.CreateData(szEvent)
if v.szContent then
if v.szContent:find('{$me}') or v.szContent:find('{$team}') or v.bSearch or v.bReg then -- ����ͨ�����������ǵ����ݲ��� HIT ����ƥ����Կ���
table.insert(cache.OTHER, v)
elseif not cache.HIT[v.szContent] then -- �����������ȼ�˳�򣨵�ͼ����ͼ�飾ͨ�ã���ͬ�������±��Ⱥ�˳��ֻȡ��һ��ƥ����
elseif not (cache.HIT[v.szContent] and cache.HIT[v.szContent][v.szTarget or 'sys']) then -- �����������ȼ�˳�򣨵�ͼ����ͼ�飾ͨ�ã���ͬ�������±��Ⱥ�˳��ֻȡ��һ��ƥ����
cache.HIT[v.szContent] = cache.HIT[v.szContent] or {}
cache.HIT[v.szContent][v.szTarget or 'sys'] = v
end
Expand Down Expand Up @@ -1064,7 +1064,7 @@ function D.OnBuff(dwOwner, bDelete, bCanCancel, dwBuffID, nCount, nBuffLevel, dw
if MY_TEAM_MON_SHIELDED_TOTAL then
return
end
if MY_TEAM_MON_SHIELDED_OTHER_PLAYER and X.IsPlayer(dwSkillSrcID) and dwSkillSrcID ~= MY_TEAM_MON_CORE_PLAYERID then
if MY_TEAM_MON_SHIELDED_OTHER_PLAYER and X.IsPlayer(dwSkillSrcID) and dwSkillSrcID ~= MY_TEAM_MON_CORE_PLAYERID and not X.IsTeammate(dwSkillSrcID) then
return
end
local szType = bCanCancel and 'BUFF' or 'DEBUFF'
Expand Down Expand Up @@ -1730,18 +1730,52 @@ function D.OnCallMessage(szEvent, szContent, dwNpcID, szNpcName)
dwReceiverID, szReceiver = nil
end
if bInParty and content:find('{$team}', nil, true) then
local c = content
for _, vv in ipairs(team.GetTeamMemberList()) do
if string.find(szContent, c:gsub('{$team}', team.GetClientTeamMemberName(vv)), nil, true) and (v.szTarget == szNpcName or v.szTarget == '%') then -- hit
data = v
dwReceiverID = vv
szReceiver = team.GetClientTeamMemberName(vv)
if v.bReg then
-- ����ģʽ����{$team}���������ų����ȱ�����Ա�����滻Ϊ�գ����滻�ɹ���˵�����У��ٽ��������{$team}�滻Ϊ�գ�ƥ��ʣ������ݣ����ֻ��һ�����򣬽�Լ����
local nHitMemberID, szHitMemberName, szProcessedContent
local tMembers = {}
-- �����ֳ��Ƚ������򣬱������ְ�����ϵ���������滻
for _, vv in ipairs(team.GetTeamMemberList()) do
tMembers[#tMembers + 1] = { dwID = vv, szName = team.GetClientTeamMemberName(vv) }
end
table.sort(tMembers, function(a, b) return #a.szName > #b.szName end)
-- �滻�������{$team}Ϊ�գ�����ȡ{$team}����������������Ա���滻Ϊ�մ���
local szPattern, nTeamCount = content:gsub('{$team}', '')
for _, member in ipairs(tMembers) do
local szReplaced = string.gsub(szContent, member.szName, '', nTeamCount)
if #szReplaced < #szContent then
nHitMemberID = member.dwID
szHitMemberName = member.szName
szProcessedContent = szReplaced
break
end
end
if nHitMemberID and szHitMemberName then
local res = {string.find(szProcessedContent, szPattern)}
if res[1] then
table.remove(res, 1)
table.remove(res, 1)
data = v
aBackreferences = res
dwReceiverID = nHitMemberID
szReceiver = szHitMemberName
break
end
end
else
local c = content
for _, vv in ipairs(team.GetTeamMemberList()) do
if string.find(szContent, c:gsub('{$team}', team.GetClientTeamMemberName(vv)), nil, true) and (v.szTarget == szNpcName or v.szTarget == '%') then -- hit
data = v
dwReceiverID = vv
szReceiver = team.GetClientTeamMemberName(vv)
break
end
end
if dwReceiverID and szReceiver then
break
end
end
if dwReceiverID and szReceiver then
break
end
elseif v.szTarget == szNpcName or v.szTarget == '%' then
if v.bReg then
local res = {string.find(szContent, content)}
Expand Down