From 00666559e4ffda1e8e7ffb58903e9c537fb10577 Mon Sep 17 00:00:00 2001 From: Darthpred Date: Tue, 1 Oct 2013 07:54:03 +0400 Subject: [PATCH] Fixing Elv's LFG chat icons not working for SLE users and not showing them in our users messages in original elvui Also added a double icon lol --- ElvUI_SLE/modules/chat/chat.lua | 160 +++++++++++++++++---------------------- 1 file changed, 69 insertions(+), 91 deletions(-) diff --git a/ElvUI_SLE/modules/chat/chat.lua b/ElvUI_SLE/modules/chat/chat.lua index 0291cbe..bb4f717 100755 --- a/ElvUI_SLE/modules/chat/chat.lua +++ b/ElvUI_SLE/modules/chat/chat.lua @@ -3,13 +3,42 @@ local CH = E:GetModule('Chat') local SLE = E:GetModule('SLE'); local LSM = LibStub("LibSharedMedia-3.0") local CreatedFrames = 0; +local lfgRoles = {}; ---Textures for chat +local tinsert, tremove, tsort, twipe, tconcat = table.insert, table.remove, table.sort, table.wipe, table.concat + +--Textures for chat-- +--Normal LFG textures +CHAT_FLAG_TANK = "|TInterface\\AddOns\\ElvUI\\media\\textures\\tank.tga:15:15:0:0:64:64:2:56:2:56|t" +CHAT_FLAG_HEALER = "|TInterface\\AddOns\\ElvUI\\media\\textures\\healer.tga:15:15:0:0:64:64:2:56:2:56|t" +CHAT_FLAG_DAMAGER = "|TInterface\\AddOns\\ElvUI\\media\\textures\\dps.tga:15:15|t" +--Adapt CHAT_FLAG_SLEADAPT = "|TInterface\\AddOns\\ElvUI_SLE\\media\\textures\\adapt.tga:0:2|t" +CHAT_FLAG_SLEADAPTTANK = CHAT_FLAG_TANK..CHAT_FLAG_SLEADAPT +CHAT_FLAG_SLEADAPTHEALER = CHAT_FLAG_HEALER..CHAT_FLAG_SLEADAPT +CHAT_FLAG_SLEADAPTDAMAGER = CHAT_FLAG_DAMAGER..CHAT_FLAG_SLEADAPT +--Authors CHAT_FLAG_SLEAUTHOR = "|TInterface\\AddOns\\ElvUI_SLE\\media\\textures\\SLE_Chat_Logo.tga:0:2|t" +CHAT_FLAG_SLEAUTHORTANK = CHAT_FLAG_TANK..CHAT_FLAG_SLEAUTHOR +CHAT_FLAG_SLEAUTHORHEALER = CHAT_FLAG_HEALER..CHAT_FLAG_SLEAUTHOR +CHAT_FLAG_SLEAUTHORDAMAGER = CHAT_FLAG_DAMAGER..CHAT_FLAG_SLEAUTHOR +--Roleplayers CHAT_FLAG_SLERPG = "|TInterface\\AddOns\\ElvUI_SLE\\media\\textures\\Chat_RPG:13:35|t" +CHAT_FLAG_SLERPGTANK = CHAT_FLAG_TANK..CHAT_FLAG_SLERPG +CHAT_FLAG_SLERPGHEALER = CHAT_FLAG_HEALER..CHAT_FLAG_SLERPG +CHAT_FLAG_SLERPGDAMAGER = CHAT_FLAG_DAMAGER..CHAT_FLAG_SLERPG +--Friends CHAT_FLAG_SLEFRIEND = "|TInterface\\AddOns\\ElvUI_SLE\\media\\textures\\Chat_Friend:13:13|t" +CHAT_FLAG_SLEFRIENDTANK = CHAT_FLAG_TANK..CHAT_FLAG_SLEFRIEND +CHAT_FLAG_SLEFRIENDHEALER = CHAT_FLAG_HEALER..CHAT_FLAG_SLEFRIEND +CHAT_FLAG_SLEFRIENDDAMAGER = CHAT_FLAG_DAMAGER..CHAT_FLAG_SLEFRIEND +--Testers CHAT_FLAG_SLETEST = "|TInterface\\AddOns\\ElvUI_SLE\\media\\textures\\Chat_Test:13:13|t" +CHAT_FLAG_SLETESTTANK = CHAT_FLAG_TANK..CHAT_FLAG_SLETEST +CHAT_FLAG_SLETESTHEALER = CHAT_FLAG_HEALER..CHAT_FLAG_SLETEST +CHAT_FLAG_SLETESTDAMAGER = CHAT_FLAG_DAMAGER..CHAT_FLAG_SLETEST + + --Toon table local IconTable = { ["Illidan"] = { @@ -83,6 +112,30 @@ local IconTable = { }, } +function CH:CheckLFGRoles() + local isInGroup, isInRaid = IsInGroup(), IsInRaid() + local unit = isInRaid and "raid" or "party" + + twipe(lfgRoles) + if(not isInGroup or not self.db.lfgIcons) then return end + local role = UnitGroupRolesAssigned("player") + if(role) then + lfgRoles[E.myname] = role + end + for i=1, GetNumGroupMembers() do + if(UnitExists(unit..i) and not UnitIsUnit(unit..i, "player")) then + role = UnitGroupRolesAssigned(unit..i) + local name, realm = UnitName(unit..i) + if(role) then + if(realm and realm ~= E.myrealm) then + lfgRoles[name.."-"..realm] = role + else + lfgRoles[name] = role + end + end + end + end +end function SLE:CheckFlag(sender, checkFlag) local senderName, senderRealm @@ -107,53 +160,6 @@ function SLE:CheckFlag(sender, checkFlag) return false end ---[[ -function SLE:Auth() - local myRealm = E.myrealm - local myName = E.myname - myRealm = myRealm:gsub(' ', '') - if IconTable[myRealm] then - for character, flag in pairs(IconTable[myRealm]) do - if character == myName and flag == "SLEAUTHOR" then - return true - end - end - end - return false -end - -function SLE:CrossAuth(sender) - local myRealm = E.myrealm - local myName = E.myname - myRealm = myRealm:gsub(' ', '') - if IconTable[myRealm] then - for character, flag in pairs(IconTable[myRealm]) do - if sender == character and flag == "SLEAUTHOR" and sender ~= myName then - return true - end - end - - for realm, _ in pairs(IconTable) do - if realm ~= myRealm then - for character, flag in pairs(IconTable[realm]) do - if sender == character.."-"..realm and flag == "SLEAUTHOR" then - return true - end - end - end - end - else - for realm, _ in pairs(IconTable) do - for character, flag in pairs(IconTable[realm]) do - if sender == character.."-"..realm and flag == "SLEAUTHOR" then - return true - end - end - end - end - return false -end -]] function CH:ChatEdit_AddHistory(editBox, line) if line:find("/rl") then return; end @@ -297,55 +303,27 @@ function CH:PositionChat(override) end local function SLEfilter(self, event, message, author, arg3, arg4, arg5, arg6, ...) local returnTex = arg6 - + local type = strsub(event, 10); if(strlen(arg6) > 0) then elseif SLE:CheckFlag(author) then - returnTex = SLE:CheckFlag(author)..arg6 - end - - return false, message, author, arg3, arg4, arg5, returnTex, ... -end - - ---Adding icons to specific toons' names ---Filter ---[[ -local function SLEfilter(self, event, message, author, arg3, arg4, arg5, arg6, ...) - local returnTex = arg6 - local myRealm = E.myrealm - myRealm = myRealm:gsub(' ', '') - if(strlen(arg6) > 0) then - else - if IconTable[myRealm] then - for character, flag in pairs(IconTable[myRealm]) do - if author == character and flag then - returnTex = flag..arg6 - end - end - - for realm, _ in pairs(IconTable) do - if realm ~= myRealm then - for character, flag in pairs(IconTable[realm]) do - if author == character.."-"..realm and flag then - returnTex = flag..arg6 - end - end - end - end + if(returnTex == "" and lfgRoles[author] and (type == "PARTY_LEADER" or type == "PARTY" or type == "RAID" or type == "RAID_LEADER" or type == "INSTANCE_CHAT" or type == "INSTANCE_CHAT_LEADER")) then + returnTex = SLE:CheckFlag(author)..lfgRoles[author] else - for realm, _ in pairs(IconTable) do - for character, flag in pairs(IconTable[realm]) do - if author == character.."-"..realm and flag then - returnTex = flag..arg6 - end - end - end + returnTex = SLE:CheckFlag(author) end + elseif not SLE:CheckFlag(author) then + if(returnTex == "" and lfgRoles[author] and (type == "PARTY_LEADER" or type == "PARTY" or type == "RAID" or type == "RAID_LEADER" or type == "INSTANCE_CHAT" or type == "INSTANCE_CHAT_LEADER")) then + returnTex = lfgRoles[author] + end + end + if returnTex == nil then + returnTex = arg6 + else + returnTex = returnTex..arg6 end - - return false, message, author, arg3, arg4, arg5, returnTex, ... + return false, message, author, arg3, arg4, arg5, returnTex, ... end -]] + --Applying filter ChatFrame_AddMessageEventFilter("CHAT_MSG_CHANNEL", SLEfilter) ChatFrame_AddMessageEventFilter("CHAT_MSG_YELL", SLEfilter) -- 1.7.9.5