Initial commit
This commit is contained in:
Executable
+574
@@ -0,0 +1,574 @@
|
||||
--[[
|
||||
Name: Prat_PlayerNames
|
||||
Revision: $Revision: 16689 $
|
||||
Author(s): Curney (asml8ed@gmail.com)
|
||||
Krtek (krtek4@gmail.com)
|
||||
Inspired by: idChat2_PlayerNames by Industrial
|
||||
Website: http://www.wowace.com/files/index.php?path=Prat/
|
||||
Documentation: http://www.wowace.com/wiki/Prat/Integrated_Modules#PlayerNames
|
||||
SVN: http://svn.wowace.com/wowace/trunk/Prat/
|
||||
Description: Module for Prat that adds player name options.
|
||||
Dependencies: Prat
|
||||
]]
|
||||
|
||||
local L = AceLibrary("AceLocale-2.2"):new("PratPlayerNames")
|
||||
|
||||
L:RegisterTranslations("enUS", function() return {
|
||||
["PlayerNames"] = true,
|
||||
["Player name formating options."] = true,
|
||||
["Brackets"] = true,
|
||||
["Square"] = true,
|
||||
["Angled"] = true,
|
||||
["None"] = true,
|
||||
["Class"] = true,
|
||||
["Random"] = true,
|
||||
["Sets style of brackets to use around player names."] = true,
|
||||
["Use common color"] = true,
|
||||
["Toggle useing common color for unknown player names."] = true,
|
||||
["Set common color"] = true,
|
||||
["Change the common color of PlayerNames"] = true,
|
||||
["Use TabComplete"] = true,
|
||||
["Toggle tab completion of player names."] = true,
|
||||
["Show Level"] = true,
|
||||
["Toggle level showing."] = true,
|
||||
["Show Group"] = true,
|
||||
["Toggle raid group showing."] = true,
|
||||
["Keep Info"] = true,
|
||||
["Keep player information between session."] = true,
|
||||
["Color Mode"] = true,
|
||||
["How to color Players name."] = true,
|
||||
["Toggle"] = true,
|
||||
["Toggle the module on and off."] = true,
|
||||
["Use Census+"] = true,
|
||||
["Use Census+ database"] = true,
|
||||
["Mark self"] = true,
|
||||
["Toggle color marking of your nikname in chat."] = true,
|
||||
["Set mark color"] = true,
|
||||
["Change the mark color of your nikname"] = true,
|
||||
["Group acronim"] = true,
|
||||
["Simbol of raid group added to group number"] = true ,
|
||||
["Enable group number at %s"] = true,
|
||||
} end)
|
||||
|
||||
L:RegisterTranslations("ruRU", function() return {
|
||||
["PlayerNames"] = "PlayerNames",
|
||||
["Player name formating options."] = "Настройки форматирования имени собеседника.",
|
||||
["Brackets"] = "Скобки",
|
||||
["Square"] = "Квадратные",
|
||||
["Angled"] = "Треугольные",
|
||||
["None"] = "Нет",
|
||||
["Class"] = "Класс",
|
||||
["Random"] = "Случайно",
|
||||
["Sets style of brackets to use around player names."] = "Установить стиль скобок вокруг имени собеседника.",
|
||||
["Use common color"] = "Использовать общий цвет",
|
||||
["Toggle useing common color for unknown player names."] = "Вкл/Выкл использование общего цвета для неизвестных имен игроков.",
|
||||
["Set common color"] = "Установить общий цвет",
|
||||
["Change the common color of PlayerNames"] = "Изменить общий цвет имен игроков",
|
||||
["Use TabComplete"] = "Использовать TabComplete",
|
||||
["Toggle tab completion of player names."] = "Вкл/Выкл TabComplete в именах игроков.",
|
||||
["Show Level"] = "Показывать уровень",
|
||||
["Toggle level showing."] = "Вкл/выкл отображения уровня собеседника.",
|
||||
["Show Group"] = "Показывать группу",
|
||||
["Toggle raid group showing."] = "Вкл/выкл отображения рейдовой группы.",
|
||||
["Keep Info"] = "Хранить информацию",
|
||||
["Keep player information between session."] = "Хранить информацию о игроках между сессиями.",
|
||||
["Color Mode"] = "Режим цвета",
|
||||
["How to color Players name."] = "Как окрасить имя игрока.",
|
||||
["Toggle"] = "Вкл/Выкл",
|
||||
["Toggle the module on and off."] = "Вкл/Выкл модуль",
|
||||
["Use Census+"] = "Использовать Census+",
|
||||
["Use Census+ database"] = "Использовать базу данных Census+",
|
||||
} end)
|
||||
|
||||
L:RegisterTranslations("zhCN", function() return {
|
||||
["PlayerNames"] = "玩家姓名",
|
||||
["Player name formating options."] = "玩家姓名格式选项。",
|
||||
["Brackets"] = "圆弧",
|
||||
["Square"] = "方形",
|
||||
["Angled"] = "折角",
|
||||
["None"] = "无",
|
||||
["Class"] = "职业",
|
||||
["Random"] = "随机",
|
||||
["Sets style of brackets to use around player names."] = "设置玩家名字的括号。",
|
||||
["Use TabComplete"] = "标签",
|
||||
["Toggle tab completion of player names."] = "为玩家姓名作标签。",
|
||||
["Show Level"] = "显示等级",
|
||||
["Toggle level showing."] = "人物等级显示。",
|
||||
["Show Group"] = "显示小组",
|
||||
["Toggle raid group showing."] = "团队小组显示。",
|
||||
["Keep Info"] = "持续",
|
||||
["Keep player information between session."] = "在进程间保持信息。",
|
||||
["Color Mode"] = "颜色模块",
|
||||
["How to color Players name."] = "玩家名字颜色。",
|
||||
["Toggle"] = "切换",
|
||||
["Toggle the module on and off."] = "切换此模块的打开与关闭。",
|
||||
} end)
|
||||
|
||||
L:RegisterTranslations("koKR", function() return {
|
||||
["PlayerNames"] = "플레이어명",
|
||||
["Player name formating options."] = "플레이어명 형식을 설정합니다.",
|
||||
["Brackets"] = "괄호",
|
||||
["Square"] = "사각형",
|
||||
["Angled"] = "각진형",
|
||||
["None"] = "없음",
|
||||
["Class"] = "직업",
|
||||
["Random"] = "무작위",
|
||||
["Sets style of brackets to use around player names."] = "플레이어명 주위 괄호의 스타일 설정",
|
||||
["Use common color"] = "공통 색상 사용",
|
||||
["Toggle useing common color for unknown player names."] = "알려지지 않은 플레이어명에 대한 공통 색상 사용을 전환합니다.",
|
||||
["Set common color"] = "공통 색상 설정",
|
||||
["Change the common color of PlayerNames"] = "플레이어명의 공통 색상을 설정합니다.",
|
||||
["Use TabComplete"] = "탭완성 사용",
|
||||
["Toggle tab completion of player names."] = "플레이어명의 탭 완성기능을 전환합니다.",
|
||||
["Show Level"] = "레벨 표시",
|
||||
["Toggle level showing."] = "레벨 표시를 전환합니다.",
|
||||
["Show Group"] = "파티 표시",
|
||||
["Toggle raid group showing."] = "공격대 파티 표시를 전환합니다.",
|
||||
["Keep Info"] = "정보 유지",
|
||||
["Keep player information between session."] = "연결 간 플레이어 정보를 유지합니다.",
|
||||
["Color Mode"] = "색상 모드",
|
||||
["How to color Players name."] = "플레이어명 색상을 변경합니다.",
|
||||
["Toggle"] = "전환",
|
||||
["Toggle the module on and off."] = "모듈 켜고 끄기를 전환합니다.",
|
||||
} end)
|
||||
|
||||
local BC = AceLibrary("Babble-Class-2.2")
|
||||
local sfind, sformat, slower, sgsub = string.find, string.format , string.lower, string.gsub
|
||||
|
||||
Prat_PlayerNames = Prat:NewModule("playernames")
|
||||
|
||||
Prat_PlayerNames.Classes = {}
|
||||
Prat_PlayerNames.Levels = {}
|
||||
Prat_PlayerNames.Subgroups = {}
|
||||
|
||||
local chatList = {[1] = {t = "SAY", n = "Say"},
|
||||
[4] = {t = "GUILD", n = "Guild"},
|
||||
[2] = {t = "PARTY", n = "Party"},
|
||||
[3] = {t = "RAID", n = "Raid"},
|
||||
[7] = {t = "WHISPER", n = "Whisper"},
|
||||
[6] = {t = "YELL", n = "Yell"},
|
||||
[5] = {t = "OFFICER", n = "Officer"},
|
||||
[93] = {t = "BATTLEGROUND", n = "Battlegground"}
|
||||
}
|
||||
Prat_chatList = chatList
|
||||
function Prat_PlayerNames:OnInitialize()
|
||||
Prat_PlayerNames.db = Prat:AcquireDBNamespace("PlayerNames")
|
||||
|
||||
local defaults = {
|
||||
on = true,
|
||||
brackets = "Angled",
|
||||
tabcomplete = true,
|
||||
level = true,
|
||||
classes = {},
|
||||
levels = {},
|
||||
subgroup = true,
|
||||
groupchan = {},
|
||||
groupAcronim = "[%s]",
|
||||
keep = true,
|
||||
census = false,
|
||||
colormode = "CLASS",
|
||||
usecommoncolor = true,
|
||||
color = {
|
||||
r = 1,
|
||||
g = 0,
|
||||
b = 1,
|
||||
},
|
||||
markself = true,
|
||||
selfcolor = {
|
||||
r = 1,
|
||||
g = 0,
|
||||
b = 1,
|
||||
},
|
||||
}
|
||||
|
||||
for id,chat in pairs( chatList) do defaults.groupchan[chat.t] = true end
|
||||
|
||||
Prat:RegisterDefaults("PlayerNames", "profile", defaults)
|
||||
Prat.Options.args.playernames = {
|
||||
name = L["PlayerNames"],
|
||||
desc = L["Player name formating options."],
|
||||
type = "group",
|
||||
args = {
|
||||
brackets = {
|
||||
name = L["Brackets"],
|
||||
desc = L["Sets style of brackets to use around player names."],
|
||||
type = "text",
|
||||
order = 140,
|
||||
get = function() return Prat_PlayerNames.db.profile.brackets end,
|
||||
set = function(v) Prat_PlayerNames.db.profile.brackets = v end,
|
||||
validate = {["Square"] = L["Square"], ["Angled"] = L["Angled"], ["None"] = L["None"]}
|
||||
},
|
||||
colormode = {
|
||||
name = L["Color Mode"],
|
||||
desc = L["How to color Players name."],
|
||||
type = "text",
|
||||
order = 150,
|
||||
get = function() return Prat_PlayerNames.db.profile.colormode end,
|
||||
set = function(v) Prat_PlayerNames.db.profile.colormode = v end,
|
||||
validate = {["RANDOM"] = L["Random"], ["CLASS"] = L["Class"], ["NONE"] = L["None"]}
|
||||
},
|
||||
level = {
|
||||
name = L["Show Level"],
|
||||
desc = L["Toggle level showing."],
|
||||
type = "toggle",
|
||||
order = 160,
|
||||
get = function() return Prat_PlayerNames.db.profile.level end,
|
||||
set = function(v) Prat_PlayerNames.db.profile.level = v end
|
||||
},
|
||||
subgroup = {
|
||||
name = L["Show Group"],
|
||||
desc = L["Toggle raid group showing."],
|
||||
type = "group",
|
||||
order = 170,
|
||||
args = {
|
||||
set = {
|
||||
name = L["Group acronim"],
|
||||
desc = L["Simbol of raid group added to group number"],
|
||||
type = "text",
|
||||
usage = "<string>",
|
||||
order = 90,
|
||||
get = function() return Prat_PlayerNames.db.profile.groupAcronim end,
|
||||
set = function(v) Prat_PlayerNames.db.profile.groupAcronim = v end
|
||||
},
|
||||
},
|
||||
|
||||
},
|
||||
keep = {
|
||||
name = L["Keep Info"],
|
||||
desc = L["Keep player information between session."],
|
||||
type = "toggle",
|
||||
order = 180,
|
||||
get = function() return Prat_PlayerNames.db.profile.keep end,
|
||||
set = function(v) Prat_PlayerNames.db.profile.keep = v end
|
||||
},
|
||||
census = {
|
||||
name = L["Use Census+"],
|
||||
desc = L["Use Census+ database"],
|
||||
type = "toggle",
|
||||
order = 185,
|
||||
get = function() return Prat_PlayerNames.db.profile.census end,
|
||||
set = function(v) Prat_PlayerNames.db.profile.census = v end
|
||||
},
|
||||
tabcomplete = {
|
||||
name = L["Use TabComplete"],
|
||||
desc = L["Toggle tab completion of player names."],
|
||||
type = "toggle",
|
||||
order = 190,
|
||||
get = function() return Prat_PlayerNames.db.profile.tabcomplete end,
|
||||
set = function(v) Prat_PlayerNames.db.profile.tabcomplete = v; self:TabComplete(v) end
|
||||
},
|
||||
usecommoncolor = {
|
||||
name = L["Use common color"],
|
||||
desc = L["Toggle useing common color for unknown player names."],
|
||||
type = "toggle",
|
||||
order = 200,
|
||||
get = function() return Prat_PlayerNames.db.profile.usecommoncolor end,
|
||||
set = function(v) Prat_PlayerNames.db.profile.usecommoncolor = v end
|
||||
},
|
||||
setcolor = {
|
||||
name = L["Set common color"],
|
||||
desc = L["Change the common color of PlayerNames"],
|
||||
type = "color",
|
||||
order = 210,
|
||||
get = function() return Prat_PlayerNames.db.profile.color.r, Prat_PlayerNames.db.profile.color.g, Prat_PlayerNames.db.profile.color.b end,
|
||||
set = function(r, g, b, a) Prat_PlayerNames.db.profile.color.r, Prat_PlayerNames.db.profile.color.g, Prat_PlayerNames.db.profile.color.b = r, g, b end,
|
||||
disabled = function() if not Prat_PlayerNames.db.profile.usecommoncolor then return true else return false end end,
|
||||
},
|
||||
markself = {
|
||||
name = L["Mark self"],
|
||||
desc = L["Toggle color marking of your nikname in chat."],
|
||||
type = "toggle",
|
||||
order = 220,
|
||||
get = function() return Prat_PlayerNames.db.profile.markself end,
|
||||
set = function(v) Prat_PlayerNames.db.profile.markself = v end
|
||||
},
|
||||
setselfcolor = {
|
||||
name = L["Set mark color"],
|
||||
desc = L["Change the mark color of your nikname"],
|
||||
type = "color",
|
||||
order = 230,
|
||||
get = function() return Prat_PlayerNames.db.profile.selfcolor.r, Prat_PlayerNames.db.profile.selfcolor.g, Prat_PlayerNames.db.profile.selfcolor.b end,
|
||||
set = function(r, g, b, a) Prat_PlayerNames.db.profile.selfcolor.r, Prat_PlayerNames.db.profile.selfcolor.g, Prat_PlayerNames.db.profile.selfcolor.b = r, g, b end,
|
||||
disabled = function() if not Prat_PlayerNames.db.profile.markself then return true else return false end end,
|
||||
},
|
||||
toggle = {
|
||||
name = L["Toggle"],
|
||||
desc = L["Toggle the module on and off."],
|
||||
type = "toggle",
|
||||
order = 500,
|
||||
get = function() return Prat_PlayerNames.db.profile.on end,
|
||||
set = function() Prat_PlayerNames.db.profile.on = Prat:ToggleModuleActive("playernames") end
|
||||
}
|
||||
}
|
||||
}
|
||||
local ord = 100
|
||||
local menu = Prat.Options.args.playernames.args.subgroup.args
|
||||
for id,chat in pairs( chatList) do
|
||||
menu[chat.t] = {}
|
||||
menu[chat.t].name = chat.n
|
||||
menu[chat.t].desc = sformat(L["Enable group number at %s"],chat.n)
|
||||
menu[chat.t].type = "toggle"
|
||||
menu[chat.t].order = ord
|
||||
--menu[chat].get = function() return Prat_PlayerNames.db.profile.groupchan[chat] end
|
||||
--menu[chat].set = function(v) Prat_PlayerNames.db.profile.groupchan[chat] = not Prat_PlayerNames.db.profile.groupchan[chat] end
|
||||
ord = ord +10
|
||||
end
|
||||
menu["SAY"].get = function() return Prat_PlayerNames.db.profile.groupchan["SAY"] end
|
||||
menu["SAY"].set = function(v) Prat_PlayerNames.db.profile.groupchan["SAY"] = v end
|
||||
menu["GUILD"].get = function() return Prat_PlayerNames.db.profile.groupchan["GUILD"] end
|
||||
menu["GUILD"].set = function(v) Prat_PlayerNames.db.profile.groupchan["GUILD"] = v end
|
||||
menu["PARTY"].get = function() return Prat_PlayerNames.db.profile.groupchan["PARTY"] end
|
||||
menu["PARTY"].set = function(v) Prat_PlayerNames.db.profile.groupchan["PARTY"] = v end
|
||||
menu["RAID"].get = function() return Prat_PlayerNames.db.profile.groupchan["RAID"] end
|
||||
menu["RAID"].set = function(v) Prat_PlayerNames.db.profile.groupchan["RAID"] = v end
|
||||
menu["WHISPER"].get = function() return Prat_PlayerNames.db.profile.groupchan["WHISPER"] end
|
||||
menu["WHISPER"].set = function(v) Prat_PlayerNames.db.profile.groupchan["WHISPER"] = v end
|
||||
menu["YELL"].get = function() return Prat_PlayerNames.db.profile.groupchan["YELL"] end
|
||||
menu["YELL"].set = function(v) Prat_PlayerNames.db.profile.groupchan["YELL"] = v end
|
||||
menu["OFFICER"].get = function() return Prat_PlayerNames.db.profile.groupchan["OFFICER"] end
|
||||
menu["OFFICER"].set = function(v) Prat_PlayerNames.db.profile.groupchan["OFFICER"] = v end
|
||||
menu["BATTLEGROUND"].get = function() return Prat_PlayerNames.db.profile.groupchan["BATTLEGROUND"] end
|
||||
menu["BATTLEGROUND"].set = function(v) Prat_PlayerNames.db.profile.groupchan["BATTLEGROUND"] = v end
|
||||
end
|
||||
|
||||
function Prat_PlayerNames:OnEnable()
|
||||
for i = 1, NUM_CHAT_WINDOWS do
|
||||
self:Hook(getglobal("ChatFrame"..i), "AddMessage")
|
||||
end
|
||||
|
||||
self:RegisterEvent("FRIENDLIST_UPDATE", "updateFriends")
|
||||
self:RegisterEvent("GUILD_ROSTER_UPDATE", "updateGuild")
|
||||
self:RegisterEvent("RAID_ROSTER_UPDATE", "updateRaid")
|
||||
self:RegisterEvent("PARTY_MEMBERS_CHANGED", "updateParty")
|
||||
self:RegisterEvent("PLAYER_TARGET_CHANGED", "updateTarget")
|
||||
self:RegisterEvent("WHO_LIST_UPDATE", "updateWho")
|
||||
self:RegisterEvent("CHAT_MSG_SYSTEM", "updateWho") -- for short /who command
|
||||
|
||||
for name, color in pairs(Prat_PlayerNames.db.profile.classes) do Prat_PlayerNames.Classes[name] = color end
|
||||
for name, level in pairs(Prat_PlayerNames.db.profile.levels) do Prat_PlayerNames.Levels[name] = level end
|
||||
|
||||
local PlayerClass
|
||||
_, PlayerClass = UnitClass("player")
|
||||
self.playerName = UnitName("player");
|
||||
self:addName(self.playerName, Playerclass, UnitLevel("player"))
|
||||
|
||||
|
||||
self:updateParty()
|
||||
self:updateRaid()
|
||||
self:updateFriends()
|
||||
self:updateGuild()
|
||||
|
||||
self:TabComplete(Prat_PlayerNames.db.profile.tabcomplete)
|
||||
end
|
||||
|
||||
function Prat_PlayerNames:OnDisable()
|
||||
self:TabComplete(false)
|
||||
end
|
||||
|
||||
function Prat_PlayerNames:updateFriends()
|
||||
local Name, Class, Level
|
||||
for i = 1, GetNumFriends() do
|
||||
Name, Level, Class = GetFriendInfo(i)
|
||||
self:addName(Name, Class, Level)
|
||||
end
|
||||
end
|
||||
|
||||
function Prat_PlayerNames:updateGuild()
|
||||
local Name, Class, Level
|
||||
for i = 1, GetNumGuildMembers() do
|
||||
Name, _, _, Level, Class = GetGuildRosterInfo(i)
|
||||
self:addName(Name, Class, Level)
|
||||
end
|
||||
end
|
||||
|
||||
function Prat_PlayerNames:updateRaid()
|
||||
local Name, Class, SubGroup, Level
|
||||
Prat_PlayerNames.Subgroups = {}
|
||||
for i = 1, GetNumRaidMembers() do
|
||||
Name, _, SubGroup, Level, Class = GetRaidRosterInfo(i)
|
||||
self:addName(Name, Class, Level, SubGroup)
|
||||
end
|
||||
end
|
||||
|
||||
function Prat_PlayerNames:updateParty()
|
||||
local Class, Unit
|
||||
for i = 1, GetNumPartyMembers() do
|
||||
Unit = "party" .. i
|
||||
_, Class = UnitClass(Unit)
|
||||
self:addName(UnitName(Unit), Class, UnitLevel(Unit))
|
||||
end
|
||||
end
|
||||
|
||||
function Prat_PlayerNames:updateTarget()
|
||||
local Class
|
||||
if not UnitIsPlayer("target") or not UnitIsFriend("player", "target") then
|
||||
return
|
||||
end
|
||||
_, Class = UnitClass("target")
|
||||
self:addName(UnitName("target"), Class, UnitLevel("target"))
|
||||
end
|
||||
|
||||
function Prat_PlayerNames:updateWho()
|
||||
local Name, Class, Level
|
||||
for i = 1, GetNumWhoResults() do
|
||||
Name, _, Level, _, Class = GetWhoInfo(i)
|
||||
self:addName(Name, Class, Level)
|
||||
end
|
||||
end
|
||||
|
||||
function Prat_PlayerNames:addName(Name, Class, Level, SubGroup)
|
||||
if Name then
|
||||
if Level and Level ~= 0 and ( not ( Prat_PlayerNames.Levels[Name] and Prat_PlayerNames.Levels[Name] > Level ) ) then
|
||||
Prat_PlayerNames.Levels[Name] = Level
|
||||
if ( Prat_PlayerNames.db.profile.keep) then Prat_PlayerNames.db.profile.levels[Name] = Level end
|
||||
end
|
||||
if Class then
|
||||
Prat_PlayerNames.Classes[Name] = Class
|
||||
if ( Prat_PlayerNames.db.profile.keep ) then Prat_PlayerNames.db.profile.classes[Name] = Class end
|
||||
end
|
||||
if SubGroup then
|
||||
Prat_PlayerNames.Subgroups[Name] = SubGroup
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Prat_PlayerNames:randomColor(Name)
|
||||
local hash = 17
|
||||
for i=1,string.len(Name) do
|
||||
hash = hash * 37 * string.byte(Name, i);
|
||||
end
|
||||
|
||||
local r = math.floor(math.mod(hash / 97, 255));
|
||||
local g = math.floor(math.mod(hash / 17, 255));
|
||||
local b = math.floor(math.mod(hash / 227, 255));
|
||||
|
||||
if ((r * 299 + g * 587 + b * 114) / 1000) < 105 then
|
||||
r = math.abs(r - 255);
|
||||
g = math.abs(g - 255);
|
||||
b = math.abs(b - 255);
|
||||
end
|
||||
|
||||
return sformat("%02x%02x%02x", r, g, b)
|
||||
end
|
||||
|
||||
function Prat_PlayerNames:addInfo(Name, id)
|
||||
if Name then
|
||||
local returnName = Name
|
||||
|
||||
if Prat_PlayerNames.Levels[Name] and Prat_PlayerNames.db.profile.level then
|
||||
returnName = sformat("%s:%s", Prat_PlayerNames.Levels[Name], returnName)
|
||||
elseif Prat_PlayerNames.db.profile.census and CensusPlus_ForAllCharacters then
|
||||
local realmName = g_CensusPlusLocale .. GetCVar("realmName");
|
||||
CensusPlus_ForAllCharacters( realmName, UnitFactionGroup("player"), nil, nil, nil, nil, Prat_InternalWhoResult)
|
||||
end
|
||||
|
||||
if Prat_PlayerNames.Subgroups[Name] and (id == nil or (chatList[id] and Prat_PlayerNames.db.profile.groupchan[chatList[id].t])) then
|
||||
local grp = sformat(Prat_PlayerNames.db.profile.groupAcronim,Prat_PlayerNames.Subgroups[Name] or "")
|
||||
returnName = sformat("%s%s", returnName, grp )
|
||||
end
|
||||
if Prat_PlayerNames.Classes[Name] then
|
||||
if Prat_PlayerNames.db.profile.colormode == "CLASS" then
|
||||
returnName = sformat("|cff%s%s|r", BC:GetHexColor(Prat_PlayerNames.Classes[Name]), returnName)
|
||||
elseif Prat_PlayerNames.db.profile.colormode == "RANDOM" then
|
||||
returnName = sformat("|cff%s%s|r", self:randomColor(Name), returnName)
|
||||
end
|
||||
else
|
||||
if Prat_PlayerNames.db.profile.usecommoncolor then
|
||||
local color = sformat("%02x%02x%02x", Prat_PlayerNames.db.profile.color.r*255, Prat_PlayerNames.db.profile.color.g*255, Prat_PlayerNames.db.profile.color.b*255)
|
||||
returnName = sformat("|cff%s%s|r", color, returnName)
|
||||
end
|
||||
end
|
||||
|
||||
return returnName
|
||||
else
|
||||
return ""
|
||||
end
|
||||
end
|
||||
|
||||
function Prat_InternalWhoResult(Name, Level, guild, race, Class, lastSeen )
|
||||
if Name then
|
||||
if Level and Level ~= 0 and ( not ( Prat_PlayerNames.Levels[Name] and Prat_PlayerNames.Levels[Name] > Level ) ) then
|
||||
Prat_PlayerNames.Levels[Name] = Level
|
||||
if ( Prat_PlayerNames.db.profile.keep) then Prat_PlayerNames.db.profile.levels[Name] = Level end
|
||||
end
|
||||
if Class then
|
||||
Prat_PlayerNames.Classes[Name] = Class
|
||||
if ( Prat_PlayerNames.db.profile.keep ) then Prat_PlayerNames.db.profile.classes[Name] = Class end
|
||||
end
|
||||
end
|
||||
end
|
||||
function gisub(s, pat, repl, n)
|
||||
pat = sgsub(pat, '(%a)',
|
||||
function (v) return '['..strupper(v)..strlower(v)..']' end)
|
||||
if n then
|
||||
return sgsub(s, pat, repl, n)
|
||||
else
|
||||
return sgsub(s, pat, repl)
|
||||
end
|
||||
end
|
||||
function Prat_PlayerNames:AddMessage(frame, text, r, g, b, id)
|
||||
if text and id then
|
||||
-- local Name = sgsub(text, ".*|Hplayer:(.-)|h.*", "%1")
|
||||
|
||||
-- Sender's name is always the first linked player name in the message
|
||||
local _, _, Name = sfind(text, "|Hplayer:(.-)|h%[.-]|h")
|
||||
|
||||
-- If self.playerName is a clickable link, don't color it
|
||||
local _, _, linkedName = sfind(text, sformat("Hplayer:(%s)", self.playerName))
|
||||
if not linkedName then
|
||||
_, _, linkedName = sfind(text, sformat("|h[(%s)]|h", self.playerName))
|
||||
end
|
||||
if not linkedName and Name ~= self.playerName and Prat_PlayerNames.db.profile.markself then
|
||||
local textL = slower(text)
|
||||
local playerL = slower(self.playerName)
|
||||
if sfind(textL, playerL) then
|
||||
local color = sformat("%02x%02x%02x", Prat_PlayerNames.db.profile.selfcolor.r*255, Prat_PlayerNames.db.profile.selfcolor.g*255, Prat_PlayerNames.db.profile.selfcolor.b*255)
|
||||
local returnName = sformat("|cff%s%s|r", color, self.playerName)
|
||||
text = gisub(text, self.playerName, returnName)
|
||||
PlaySound("FriendJoinGame");
|
||||
end
|
||||
end
|
||||
|
||||
local Brackets
|
||||
Name = self:addInfo(Name, id)
|
||||
|
||||
if Prat_PlayerNames.db.profile.brackets == "Angled" then
|
||||
Brackets = "<|Hplayer:%1|h" .. Name .. "|h>"
|
||||
elseif Prat_PlayerNames.db.profile.brackets == "None" then
|
||||
Brackets = "|Hplayer:%1|h" .. Name .. "|h"
|
||||
else
|
||||
Brackets = "[|Hplayer:%1|h" .. Name .. "|h]"
|
||||
end
|
||||
|
||||
-- Only replace the first instance, and leave any linked names untouched
|
||||
text = sgsub(text, "|Hplayer:(.-)|h%[.-%]|h(.-:-)", Brackets .. "%2", 1)
|
||||
end
|
||||
Prat_PlayerNames.hooks[frame].AddMessage(frame, text, r, g, b, id)
|
||||
end
|
||||
|
||||
function Prat_PlayerNames:TabComplete(enabled)
|
||||
if enabled then
|
||||
if not AceLibrary("AceTab-2.0"):IsTabCompletionRegistered("Prat_PlayerNames") then
|
||||
AceLibrary("AceTab-2.0"):RegisterTabCompletion("Prat_PlayerNames", "",
|
||||
function(t, text, pos)
|
||||
for name in pairs(Prat_PlayerNames.Classes) do
|
||||
table.insert(t, pos == 0 and name..":" or name)
|
||||
end
|
||||
end,
|
||||
function(u, cands)
|
||||
local text = ""
|
||||
for _, cand in ipairs(cands) do
|
||||
cand = sgsub(cand, ":", "")
|
||||
cand = self:addInfo(cand, nil)
|
||||
text = text .. " " .. cand
|
||||
end
|
||||
Prat:Print("Tab completion : " .. text)
|
||||
end
|
||||
)
|
||||
end
|
||||
else
|
||||
if AceLibrary("AceTab-2.0"):IsTabCompletionRegistered("Prat_PlayerNames") then
|
||||
AceLibrary("AceTab-2.0"):UnregisterTabCompletion("Prat_PlayerNames")
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user